我最近正在处理数字,我遇到了这样一种情况,我希望将双精度值的精度设置为6位或4位,具体取决于数据库中存储的值。
例如,如果在数据库中将精度设置为4位,则输出必须如下所示:
10.0000
。
我尝试使用DecimalFormat
并使用字符串##.####
,但每次都使用符号是很烦人的。
有没有更好的方法,像下面这样说:
Double value = 10.0;
value.setPrecision(4);
发布于 2013-02-13 11:32:24
不能将双精度(或双精度)的精度设置为指定的小数位数,因为浮点值没有小数位。它们有二进制数字。
您必须通过BigDecimal
或DecimalFormat
将其转换为十进制基数,具体取决于您稍后要对该值执行的操作。
另请参阅我对this question的回答,以反驳不可避免的*100/100答案。
发布于 2014-02-06 15:17:33
您可以尝试使用BigDecimal来实现此目的
Double toBeTruncated = new Double("3.5789055");
Double truncatedDouble = BigDecimal.valueOf(toBeTruncated)
.setScale(3, RoundingMode.HALF_UP)
.doubleValue();
发布于 2013-10-24 05:20:14
这是一种简单的方法:
String formato = String.format("%.2f");
它将精度设置为2位数。
如果您只想打印,请这样使用它:
System.out.printf("%.2f",123.234);
https://stackoverflow.com/questions/14845937
复制相似问题