我已经找了几个小时了,我找不到一个简单的方法来完成下面的工作。
Value 1 = 0.00531
Value 2 = 0.051959
Value 3 = 0.0067123
我想增加每个值的最小小数点(然而,数字必须保持小数点的确切数量,因为它开始时,小数点的数量随每个值而变化,因此我的麻烦)。
Value 1 should be: 0.00532
Value 2 should be: 0.051960
Value 3 should be: 0.0067124
有没有人知道一个简单的方法来完成上述功能,仍然可以处理任何数量的小数?
谢谢。
3条答案
按热度按时间vngu2lb81#
你看过标准模块decimal吗?
它规避了浮点行为。
只是为了说明可以做些什么。
印刷品
或完整版本(编辑后也携带任何数字,所以它也适用于
'0.199'
)...打印机
pw9qyyiw2#
正如其他评论者所指出的:你不应该用
floats
操作,因为一个给定的数字0.1234
被转换成一个内部表示,你不能进一步处理它的方式,你想要的。这是故意模糊的公式化。浮点本身就是一个主题。This article很好地解释了这个主题,是一个很好的入门。也就是说,你可以做的是将输入作为字符串(例如,从输入阅读时不要将其转换为浮点数)。然后你可以这样做:
这个打印
更新:
如果你 * 需要 * 对浮点数进行操作,你可以 * 尝试 * 使用模糊逻辑来结束演示。
decimal
提供了一个normalize
函数,可以让你降低十进制表示的精度,以便它与原始数字匹配:但请注意,
16
的精度是纯实验性的,你需要尝试一下,看看它是否能产生你想要的结果。如果你需要正确的结果,你不能走这条路。a11xaf1n3#
使用数字作为输入并实现减法的一点改进:
输出: