我正在编写Python3代码,它要求我简单地删除小数。我尝试了我能想到的最简单的事情
num = int(str(float(x)).replace('.', ''))
其中x
是使用x = a*x*(1-x)
生成的,其中a
和x
都是浮点
但当十进制数用科学记数法表示时,它会抛出以下错误:
num = int(str(float(x)).replace('.', ''))
ValueError: invalid literal for int() with base 10: '4234481147613274e-05'
虽然它在没有用科学符号表示时起作用。让我感兴趣的是,当我在命令行中使用相同的数字时,它给出了正确的结果
>>> x = 4234481147613274e-05
>>> x
42344811476.13274
>>> num = int(str(float(x)).replace('.', ''))
>>> num
4234481147613274
我检查了以下线程,但它对我没有帮助(Convert scientific notation to decimals)。为什么会这样
编辑:老实说,我不能确切地写出我正在编写的代码,因为我不允许透露。但我还是会尽可能地说清楚:
x = 0.55
和a
是一个介于3.85681和4之间的数字,然后我循环x
的值,最后是转换:
a = 3.85681 + ((big_integer)%14319)*1e-5
for i in range(500): x = a*x*(1-x)
num = int(str(float(x)).replace('.', ''))
我想要的是如果x = 0.470912345
,我想要num = 470912345
。所以我认为这个问题是可以理解的,为什么我没有使用x*10000
或类似的东西,因为我不想0.452变成4520,但只想452
浮点不能精确表示小数。
例如,下面的代码不起作用,因为x是“4.234481147613274e-05”
(在我的环境中)
如果您想更精确地使用十进制,
您应该使用十进制模块
相关问题 更多 >
编程相关推荐