我想将a
四舍五入为13.95。我尝试使用round
,但是我得到的结果是:
>>> a
13.949999999999999
>>> round(a, 2)
13.949999999999999
如果您遇到了标准库Decimal类的类似问题,请参见如何格式化小数以始终显示2个小数位?。
我想将a
四舍五入为13.95。我尝试使用round
,但是我得到的结果是:
>>> a
13.949999999999999
>>> round(a, 2)
13.949999999999999
如果您遇到了标准库Decimal类的类似问题,请参见如何格式化小数以始终显示2个小数位?。
我看到的答案对于浮点数(52.15)的情况无法解决。经过一些测试,我找到了以下解决方案:
import decimal
def value_to_decimal(value, decimal_places):
decimal.getcontext().rounding = decimal.ROUND_HALF_UP # define rounding method
return decimal.Decimal(str(float(value))).quantize(decimal.Decimal('1e-{}'.format(decimal_places)))
将'value'转换为浮点数然后再转换为字符串非常重要,这样,'value'可以是浮点型、十进制型、整型或字符串类型!
希望这能对任何人有所帮助。
为了计算,我使用一个截断值的函数,也许可以帮助你
import math
def truncate(number, digits) -> float:
stepper = pow(10.0, digits)
return math.trunc(stepper * number) / stepper
print(truncate((0.1 + 0.2), 2))
k - 分子
n - 分母
'%.2f' - 表示你想要保留两位小数的精度
*100 - 将数字从小数转换为百分数
percentage = lambda k, n: '%.2f' % (k/n*100)
- equivalent to-
def percentage(k,n):
return '%.2f' % (k/n*100)
percentage(1,3)
输出 -> '33.33'
只需使用此函数并将字节作为输入传递给它:
def getSize(bytes):
kb = round(bytes/1024, 4)
mb = round(kb/1024, 4)
gb = round(mb/1024, 4)
if(gb > 1):
return str(gb) + " GB"
elif(mb > 1):
return str(mb) + " MB"
else:
return str(kb) + " KB"
这是我能想到的最简单的动态将数据大小从字节转换为KB、MB或GB的方法。
def custom_round(number, decimal_places):
multiplier = 10 ** decimal_places
rounded_number = round(number * multiplier) / multiplier
return rounded_number
result = custom_round(13.9456789, 2) # Rounds to 2 decimal places
print(result) # Output will be 13.95
先将a转换为浮点数:
round(float(a), 2)
我使用的方法是字符串切片。这是相对快速和简单的。
首先,将浮点数转换为字符串,然后选择所需的长度。
float = str(float)[:5]