舍入欧元法

时间:2012-02-13 12:22:41

标签: java

我需要一种简单的方法(JAVA)来在这种模式下舍入欧元:

  • 1.00 = 1.00
  • 1.01 = 1.00
  • 1.02 = 1.00
  • 1.03 = 1.05
  • 1.04 = 1.05
  • 1.05 = 1.05
  • 1.06 = 1.05
  • 1.07 = 1.05
  • 1.08 = 1.10
  • 1.09 = 1.10
  • 1.10 = 1.10

任何人都可以帮助我吗?感谢。

3 个答案:

答案 0 :(得分:2)

一般情况下:以浮动/双打存钱是一个坏主意,只会导致灾难。

如果您的数字足够小,您可以将分数存储为整数:100,101,...在您的示例中。如果它们可能会变得太大,请使用BigIntegers或等效的。

你可以像这样转换你想要的方式:减去1(分),除以粒度(在这种情况下为5美分),加1,乘以粒度。

答案 1 :(得分:1)

double euro = 1.07;
final double dif = euro % 0.05;
if (dif > 0.025) {
    euro += 0.05 - dif;
} else {
    euro -= dif;
}

答案 2 :(得分:0)

我不知道正确的java语法,但这应该是技巧:

price  = round(price * 100 / 5) / 100 * 5