I need to round a float to two decimal places in Java
Possible Duplicate:
How to round a number to n decimal places in Java
我很难把浮点数四舍五入到小数点后两位。我尝试了一些我在这里看到的方法,包括简单地使用Math.round(),但无论我做什么,我都会得到不寻常的数字。
我有一个正在处理的浮动列表,列表中的第一个显示为1.2975118E7。什么是E7?
当我使用Math.round(f)时(f是浮点数),我得到了完全相同的数字。
我知道我做错了什么,我只是不确定。
我只想数字的格式是x.xx。第一个数字应该是1.30等。
- 您希望对浮点数的字符串显示进行舍入。你可能不想把数字本身取整。避免使用float,使用double代替更高的精度,然后查看许多方法中的一种,这些方法可以为双精度数字提供合适的字符串显示,包括string.format(…)、number format或decimalFormat。
科学1.2975118E7是位置。P></
1
| 1.2975118E7 = 1.2975118 * 10^7 = 12975118 |
归来也,Math.round(f)an integer。你不能使用它,让你的教育x.xx格式。P></
你可以使用String.format。P></
- String.format会产生问题,因为它会根据区域设置用点或逗号创建浮点数。
- @Yoannhercouet,你不能不考虑地点就到处玩花车。那不应该是个问题。;-)
- 使用以下格式:string.format(locale.us,"%.2f",1.2975118),这样更安全。至少你知道格式…
如果你正在寻找货币formatting(你不specify but which,that is,似乎是你尝试NumberFormatlooking for the class)。这是非常简单的:P></
which will输出(在线depending地方):P></
$2.30P></
也不要求,如果货币(the decimal places"精确二:你可以使用this instead)P></
1 2 3 4
| NumberFormat formatter = NumberFormat. getNumberInstance();
formatter. setMinimumFractionDigits(2);
formatter. setMaximumFractionDigits(2);
String output = formatter. format(d ); |
输出2.30which willP></
- 有人愿意解释我的答案和Makoto的反对票吗?
- 不确定。我投票给你和@makato,因为这是第一个解决实际问题的:浮点数的格式化字符串表示。
- @装满鳗鱼的气垫船:谢谢,我也投了马卡托的票。我只能猜测是有人在撒尿,因为这是一个重复的问题?不会使答案无效。旁注,你可能有我见过的最好的用户名。
- 回答很好,但我有一个问题。)我还没有找到答案的问题。它是一个字符串,服务器正在等待我发送一个浮点值。我尝试使用float.valueof()或parsefloat():如果它的值是0.10003482948329,它将得到我需要的0.10。但如果是2.00000000000,我会得到2,我需要2.00(必须是一个浮点数)
- @Rosualin,这可能不是一个好方法,但是如果您只想在用户界面中显示它而不使用它进行计算,那么,String.valueOf(RESULT[2])+".00",然后再一次parseFloat:-p
你可以让你使用DecimalFormatof the风格给你希望。P></
因为它的位置在科学,你不会是能够比任何to get the number that many 107没有失去的小订单级精度的工学院。P></
- 谢谢大家的帮助。科学记数法是我的动力,我以为它不起作用,因为数字是一样的,但我的数字是错误的!
- 我能从中返回浮点值吗:float roundofdecimal(float dd)decimalfat df=new decimalfat();df.setmaximumFractionDigits(2);system.out.println(df.format(dd));return df.format(dd);
- @平图科纳:不-看起来没有任何方法可以让漂浮物从DecimalFormat返回。老实说,如果从双精度数转换为浮点数,则会失去精度;而且,格式化数字对于读取数据的人来说是一种形式-如果需要原始浮点数,只需返回即可!
- 好吧,那就随便吧,因为我想要精确的两个小数点。
试着看着the bigdecimal舱。EN is the Go to和for rounding准确级货币支持。P></
- 我不明白,你能提供更多的解释吗?
- 我不明白为什么你的答案被否决了
- 也不确定。它甚至得到了删除投票。