gpt4 book ai didi

Python 以可能由其小数位数预先确定的最小步长递增 float

转载 作者:太空宇宙 更新时间:2023-11-04 02:36:09 26 4
gpt4 key购买 nike

我已经搜索了几个小时,但找不到完成以下任务的简单方法。

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

有谁知道在一个仍然可以处理任意小数位数的函数中完成上述任务的简单方法吗?

谢谢。

最佳答案

你看过标准模块了吗decimal

它规避了浮点行为。

只是为了说明可以做什么。

import decimal
my_number = '0.00531'
mnd = decimal.Decimal(my_number)
print(mnd)
mnt = mnd.as_tuple()
print(mnt)
mnt_digit_new = mnt.digits[:-1] + (mnt.digits[-1]+1,)
dec_incr = decimal.DecimalTuple(mnt.sign, mnt_digit_new, mnt.exponent)
print(dec_incr)
incremented = decimal.Decimal(dec_incr)
print(incremented)

打印

0.00531
DecimalTuple(sign=0, digits=(5, 3, 1), exponent=-5)
DecimalTuple(sign=0, digits=(5, 3, 2), exponent=-5)
0.00532

或完整版(编辑后还带有任何数字,因此它也适用于'0.199')...

from decimal import Decimal, getcontext

def add_one_at_last_digit(input_string):
dec = Decimal(input_string)
getcontext().prec = len(dec.as_tuple().digits)
return dec.next_plus()

for i in ('0.00531', '0.051959', '0.0067123', '1', '0.05199'):
print(add_one_at_last_digit(i))

打印

0.00532
0.051960
0.0067124
2
0.05200

关于Python 以可能由其小数位数预先确定的最小步长递增 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47849106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com