首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将双精度数舍入到小数点后两位

将双精度数舍入到小数点后两位
EN

Stack Overflow用户
提问于 2010-05-11 14:36:50
回答 12查看 1.5M关注 0票数 552

如果值为200.3456,则应将其格式化为200.34。如果它是200,那么它应该是200.00

EN

回答 12

Stack Overflow用户

发布于 2010-05-11 14:49:31

如果您只想打印小数点后有两位数的double,请使用如下所示:

double value = 200.3456;
System.out.printf("Value: %.2f", value);

如果您希望将结果显示在String中,而不是打印到控制台,请使用带有相同参数的String.format()

String result = String.format("%.2f", value);

或者使用类DecimalFormat

DecimalFormat df = new DecimalFormat("####0.00");
System.out.println("Value: " + df.format(value));
票数 376
EN

Stack Overflow用户

发布于 2012-03-13 22:39:33

我认为这更简单:

double time = 200.3456;
DecimalFormat df = new DecimalFormat("#.##");      
time = Double.valueOf(df.format(time));

System.out.println(time); // 200.35

请注意,这实际上将为您进行舍入,而不仅仅是格式化。

票数 143
EN

Stack Overflow用户

发布于 2010-05-11 14:43:24

最简单的方法就是像这样做一个小把戏;

double val = ....;
val = val*100;
val = Math.round(val);
val = val /100;

如果val从200.3456开始,则为20034.56,然后四舍五入为20035,然后除以得到200.34。

如果你想总是四舍五入,我们总是可以通过转换为int来截断:

double val = ....;
val = val*100;
val = (double)((int) val);
val = val /100;

此技术适用于大多数情况,因为对于非常大的双精度(正或负),它可能会溢出。但是,如果您知道您的值将在适当的范围内,那么这对您来说应该是有效的。

票数 89
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2808535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档