我已经搜索了几个小时,但找不到完成以下任务的简单方法。
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
我是一名优秀的程序员,十分优秀!