考虑下面的表达式
(sp.Float(3000)**20000)**20000
或者,等价地,十进制,
(Decimal(3000)**20000)**20000
大约是
Decimal('7.72440390834123481997707091832E+1390848501')
但是,不支持sympy.float和decimal.Decimal之间的转换
Decimal((sp.Float(3000)**20000)**20000)
TypeError: conversion from Float to Decimal is not supported
并且如果在其间使用浮点函数,
Decimal(float( (sp.Float(3000)**20000)**20000))
该值将被错误地转换为
Decimal('Infinity')
因为这个数字超过了浮动的限制。
如何将symy.Float转换为decimal.Decimal而不设陷阱?
2条答案
按热度按时间piwo6bdm1#
你可以通过str转换:
hivapdat2#
您可以为Decimal数字设置所需的精度,如
你的指数大于MAX_PREC,所以你不能用Decimal来表示它,除非你能让MAX_PREC更大。你有没有考虑过存储你的数字的对数而不是数字本身?