求一个函数 要求将一个Double类型的对象的值四舍五入,保留小数点两位,并且如果最后两位为99的,例如12.99,变为13.00 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你会C语言的printf吗?用java.util.Formatter类试试. public static void main(String[] args) { double b = 12.939; System.out.println(round(b)); System.out.println(round(b, 2));}/** * 保留多位小数 * @param num * @param digital * @return */public static double round(double num, int digital) { long n = 1; for(int i=0; i<digital; i++){ n *= 10; } return Math.round(num*n) / (double)n;}/** * 保留两位小数 * @param num * @return */public static double round(double num) { return Math.round(num*100) / 100.0;} bao110908(bao)(bao)(讨厌蟑螂) =============================程序有问题,如果是12.99或者是12.993不能满足楼主的要求,这个得到的是12.99而12.999得到的是13.0 to: 楼上如果把 12.993,保留两个小数舍为 13.00 的话,就不符合四舍五入规则了,不知道为什么要这样,不过还是要谢谢你,我没看清问题,改正一下:/** * 保留两位小数 * @param num * @return */public static double round(double num) { if(num%1.0 >= 0.99) { num = (int)num + 1; } return Math.round(num*100) / 100.0;}另外在数值是 13.00 时,显示的结果为 13.0,这是 double 类型数据的默认显示格式,与 13.00 的值是相等的,只是显示的格式问题。如果要显示为 13.00 的话,需要进行格式化输出: System.out.printf("%.2f%n", d); double d=12.989; d =Math.ceil(d*100)/100; if((d+"").lastIndexOf(".99")!=-1)d = Math.round(d); System.out.println(d); 镂空塔 救火啦 eclipse使用的问题 一个关于Unknown Source的问题,谢谢解答! 请大家给一个使用java类格式化date对象为一个指定格式String的例子。 [急!!在线等!!]大家帮我看一下这程序,怎么不能将数据加入到JTable中呀~~ protected transient final Log这是什么,干什么的 求教:: 帮帮我,我如何在dos模式下打印出字符串?急 100分求JDK最新版: 各位高手,给点初学者的建议 JAVA生成的.EXE文件怎么样才能在没有JAVA虚拟机的系统运行?
double b = 12.939;
System.out.println(round(b));
System.out.println(round(b, 2));
}/**
* 保留多位小数
* @param num
* @param digital
* @return
*/
public static double round(double num, int digital) {
long n = 1;
for(int i=0; i<digital; i++){
n *= 10;
}
return Math.round(num*n) / (double)n;
}/**
* 保留两位小数
* @param num
* @return
*/
public static double round(double num) {
return Math.round(num*100) / 100.0;
}
=============================
程序有问题,如果是12.99或者是12.993不能满足楼主的要求,这个得到的是12.99
而12.999得到的是13.0
* 保留两位小数
* @param num
* @return
*/
public static double round(double num) {
if(num%1.0 >= 0.99) {
num = (int)num + 1;
}
return Math.round(num*100) / 100.0;
}另外在数值是 13.00 时,显示的结果为 13.0,这是 double 类型数据的默认显示格式,与 13.00 的值是相等的,只是显示的格式问题。如果要显示为 13.00 的话,需要进行格式化输出: System.out.printf("%.2f%n", d);
d =Math.ceil(d*100)/100;
if((d+"").lastIndexOf(".99")!=-1)d = Math.round(d);
System.out.println(d);