python - 将 float 转换为字符串而不四舍五入

标签 python string floating-point rounding

我正在编写一个程序,由于不需要解释的原因,它需要将 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'

Documentation here .

关于python - 将 float 转换为字符串而不四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1317558/

相关文章:

regex - 如何在正则表达式中添加用户定义的字符串

c++ - x86-64 长 double

c++ - 在 MinGw 和 Clang 之间将 float 转换为 int 不一致

python - python 中的关键字参数别名

python - 在python中解压.xls文件

java - 根据数值对字符串数组进行排序

java - java中如何找到两个相似的字符串?

python - 字符串的 ABC?

python - Pandas :是否可以使用任意长的 bool 标准过滤数据框?

python - 如何使用两个或多个列表进行查询集过滤?