我怎样才能让它执行到小数点后两位,结果是长小数[重复]
Posted
技术标签:
【中文标题】我怎样才能让它执行到小数点后两位,结果是长小数[重复]【英文标题】:How can i get this to execute to two decimal places, comes out as long decimal [duplicate] 【发布时间】:2015-01-26 19:26:38 【问题描述】:int ptstotal, ptsearned, ptssofar;
ptstotal= 1500;
ptsearned= 750;
ptssofar= 950;
System.out.println("The current percentage is "+(int)Math.round(ptsearned*1)/(double)(ptssofar)*100+"%.");
System.out.println("The current percentage is "+Math.round(ptsearned*1)/(double)ptssofar*100+"%.");
输出是长小数 78.96736805263% 只需要 78.97% 需要一些帮助
【问题讨论】:
使用 DecimalFormat 类。这个问题之前已经被问过很多次了。 ***.com/questions/17060285/… 【参考方案1】:尝试使用 printf 代替
double value = (int)Math.round(ptsearned*1)/(double)(ptssofar)*100;
System.out.printf("The current percentage is %.2f %",value);
【讨论】:
谢谢!这也成功了!【参考方案2】:没有必要将一个数字乘以 1,或者对一个您知道是整数的数量调用 Math.round
。保持简单。
double percentage = (double)ptsearned / ptssofar * 100;
System.out.format("The current percentage is %.2f%%%n", percentage);
在这里,您需要(double)
来避免整数除法。然后,在格式字符串中,%.2f
表示以两位小数显示此值。下一个%%
转换为百分号,最后一个%n
转换为行分隔符。
【讨论】:
谢谢。这有帮助。我对 Java 还很陌生,所以我在尝试让它工作时就是这样。不知道如何让它发挥作用。【参考方案3】:您可以将DecimalFormat
或formatted output 与printf(String, Object...)
一起使用
DecimalFormat df = new DecimalFormat("###.00");
System.out.println("The current percentage is "
+ df.format(Math.round(ptsearned * 1) / (double) (ptssofar)
* 100) + "%.");
System.out.printf("The current percentage is %.2f%%.%n",
Math.round(ptsearned * 1) / (double) ptssofar * 100);
哪些输出(请求的)
The current percentage is 78.95%.
The current percentage is 78.95%.
【讨论】:
非常感谢!这很完美! 我认为更好的格式化字符串是#.00
。那样你总是会得到两位小数。以上是关于我怎样才能让它执行到小数点后两位,结果是长小数[重复]的主要内容,如果未能解决你的问题,请参考以下文章