我在 Python 中有一个包含浮点数的变量(例如 num = 24654.123
),我想确定数字的精度和比例值(在 Oracle 意义上),所以 123.45678 应该给我 (8, 5), 12.76 应该给我 (4,2), 等等.
我首先考虑使用字符串表示(通过 str
或 repr
),但是对于大数字来说那些失败了(尽管我现在明白浮点表示的局限性就是这里的问题):
>>> num = 1234567890.0987654321
>>> str(num) = 1234567890.1
>>> repr(num) = 1234567890.0987654
编辑:
下面的好点。我应该澄清一下。该数字已经是一个浮点数,正在通过 cx_Oracle 推送到数据库。我正在尝试在 Python 中尽我所能来处理对于相应的数据库类型来说太大的浮点数,而不是执行 INSERT 和处理 Oracle 错误(因为我想处理数字字段,而不是记录,在一次)。我猜 map(len, repr(num).split('.'))
是我最接近浮点数的精度和比例吗?
原文由 jrdioko 发布,翻译遵循 CC BY-SA 4.0 许可协议
获取小数点左边的位数很容易:
由于浮点值固有的不准确性,小数点右边的位数比较棘手。我还需要几分钟来解决这个问题。
编辑: 基于该原则,这是完整的代码。