【发布时间】:2011-09-05 14:33:03
【问题描述】:
有没有一种简单的方法或集成函数来找出浮点数的小数位?
数字是从字符串中解析出来的,因此一种方法是计算“。”之后的数字。标志,但这对我来说看起来很笨拙。是否有可能从float 或Decimal 对象中获取所需的信息?
解决方案(当然是其中之一:))
我选择使用 python decimal.Decimal 类来帮助我解决问题:
e = abs(Decimal(string_value).as_tuple().exponent)
注意:这仅适用于构造 Decimal 的参数是字符串而不是浮点数(这会导致浮点数不准确)。
非常感谢所有其他贡献。
【问题讨论】:
-
在 python 中不确定,但在本地化时要非常小心,因为某些文化赋予“,”和“。”不同的含义。解释数字时的字符
-
是的,你是对的,但就我而言,我可以确保以显示的数字格式获取值。但无论如何,谢谢你的信息。 :)
-
您可能会落入旧的精度/准确性陷阱。简而言之,精度是点后面的位数。准确性是这些数字中有多少实际上是“正确的”。浮点表示是计算机仅逼近预期值的领域之一。
-
如果你认为解决方案是从一个字符串值开始,为什么不直接从字符串中找到位数,而不是通过Decimal类型呢?
-
正如我在问题中所说,我认为这种方法太笨拙了。并且它不符合没有小数位的数字或其他格式的数字(例如:科学)。 Decimal 类似乎是一个很好的抽象。