我需要一种简单的方法(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
谁能帮助我?谢谢。
我需要一种简单的方法(JAVA)在此模式下舍入欧分:舍入欧分方法
谁能帮助我?谢谢。
double euro = 1.07;
final double dif = euro % 0.05;
if (dif > 0.025) {
euro += 0.05 - dif;
} else {
euro -= dif;
}
使用'double'来存储金钱是个坏主意。 – Jesper 2012-02-13 12:36:15
为什么使用双重存储金额是一个坏主意?如果返回错误或腐败数据,您可以发布代码吗?对不起和坦克。 – 2012-02-14 17:54:12
无法正常工作:157.68 - > 157.67999999999998我需要157.68 - > 157.70 – 2012-02-14 18:00:36
我不知道正确的Java语法,但是这应该给招:
price = round(price * 100/5)/100 * 5
一般:这是一个坏主意来存储钱花车/双打,它只会导致灾害。
如果你的号码保持足够小,你可以使用存储分数的整数:100,101,...在你的例子中。如果它们可能会变得太大,则使用BigIntegers或等效。
你可以这样转换你想要的方式:减1(分),除以粒度(在这种情况下为5美分),加1,乘以粒度。
您可以请添加一些参考或理由为什么浮动是不好的钱? – PiTheNumber 2012-02-13 12:44:45
当然! http://www.javapractices.com/topic/TopicAction.do?Id=13 – 2012-02-13 12:51:00
你有没有试图编写任何代码? – Aziz 2012-02-13 12:24:35
“任何人都可以帮助我”我们可以帮助您解决您编写的代码中的问题,但是SO不是一种代码编写服务。请发布您迄今为止写的内容。 – Raedwald 2012-02-13 12:25:35
他不知道如何编写代码。我认为这是一个有效的问题。 – PiTheNumber 2012-02-13 12:30:00