避免字符串转换的一种方法是使用Decimals实现方法:
from decimal import Decimaldef fexp(number): (sign, digits, exponent) = Decimal(number).as_tuple() return len(digits) + exponent - 1def fman(number): return Decimal(number).scaleb(-fexp(number)).normalize()
请注意,使用浮点数时,不进行舍入就无法计算尾数和指数。原因是浮点数以2为基数存储。例如,存储的float值
154.3是
154.30000000000001136868377216160297393798828125。浮点数在控制台中以准确的数字显示,因为(在CPython中)浮点数在使用硬编码精度17进行序列化时总是四舍五入。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)