我正在编写一个程序,由于不需要解释的原因,它需要将 float 转换为字符串以使用 len() 进行计数。但是, str(float(x)) 导致 x 在转换为字符串时被四舍五入,这会将整个事情扔掉。有谁知道修复它? 如果您想知道,这是正在使用的代码:
len(str(float(x)/3))
最佳答案
在处理 float 时,某些形式的舍入通常是不可避免的。这是因为您可以精确以 10 为底的数字并不总是以 2 为底(您的计算机使用)精确表达。
例如:
>>> .1
0.10000000000000001
在这种情况下,您会看到 .1 使用 repr
转换为字符串:
>>> repr(.1)
'0.10000000000000001'
我相信当您使用 str() 时,python 会去掉最后几位数字以解决此问题,但它只是部分解决方法,不能替代了解正在发生的事情。
>>> str(.1)
'0.1'
我不确定“四舍五入”究竟会给您带来什么问题。也许你会更好地使用字符串格式化来更精确地控制你的输出?
例如
>>> '%.5f' % .1
'0.10000'
>>> '%.5f' % .12345678
'0.12346'
关于python - 将 float 转换为字符串而不四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1317558/