python中非典型舍入的问题

时间:2011-06-17 07:53:51

标签: python math rounding

我正在测试一个特定舍入的系统 - 最后一个数字总是向上舍入

e.g。

  • 123,459应该产生123,46
  • 99,9911应该产生100,00

如何在python中实现它?

修改

最重要的是 - 这些数字是价格

3 个答案:

答案 0 :(得分:4)

import math
def myRounding(x):
   return math.ceil(x*100) / 100.0

请注意,由于浮点无法表示所有小数部分,因此某些结果将无法以浮点数表示。如果这是一个问题,请使用定点数进行计算(即1.23由123表示,固定因子为0.01),或使用decimal.Decimal

答案 1 :(得分:0)

  

[...]最后一个数字总是四舍五入。

此轮次为n-1小数,其中n表示小数点后的位数。

def roundupLast(x):
    return round(x, len(str(x).split(".")[-1]) - 1)


print(roundupLast(123.459))  # 123.46
print(roundupLast(99.9911))  # 99.991
print(roundupLast(99.9916))  # 99.992

答案 2 :(得分:-1)

您可以使用formatter

来完成
NSNumber *Numero = 99.99
NSNumberFormatter *Formatter = [[NSNumberFormatter alloc] init] ;
[Formatter setNumberStyle:NSNumberFormatterDecimalStyle];     

//Formatter ROUNDING MODE
[Formatter setRoundingMode:NSNumberFormatterRoundUp];

[Formatter setMinimumFractionDigits:2];
[Formatter setMaximumFractionDigits:2];

result = [Formatter stringFromNumber:Numero];
[Formatter release];