1.23 变成1.3 1.223变成1.23 是无规律的。也就是说后面的如果不是0就要往前面进一位。 1.23 变成1.3 1.223变成1.23 是无规律的。也就是说后面的如果不是0就要往前面进一位。谢谢各位了。Math.ceil()这个是取整的好像。不是我要的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个有点困难,因为浮点数本身就不精确的,很难确定小数点后面有几位有效数。public static void main(String[] arg) { double d = 1.22354564; int k = 1; double tmp = d * k; while(tmp % 1 != 0) { k *= 10; tmp = d * k; } k /= 10; tmp = Math.ceil(d * k) / k; System.out.println(tmp);} 改一下,有点问题:tmp = (k != 0) ? Math.ceil(d * k) / k : d; 如果你用精确表示的BigDecimal,可以这么做BigDecimal decimal = new BigDecimal("1.23"); System.out.println(decimal); decimal = decimal.setScale(decimal.scale() - 1, BigDecimal.ROUND_HALF_UP); System.out.println(decimal); 错了,应该是decimal = decimal.setScale(decimal.scale() - 1, BigDecimal.ROUND_CEILING); 求sun.net.ftp.FtpClient完整API sha加密后,为什么每个字节都要和0xff 与一下? 毕业设计,毫无头绪啊 swing 触发事件,急急 请教JAVA 中 Thread的问题? 为什么使用com.jspsmart.upload组件? 新建一java qq群(24286605) 欢迎大家加入 百思不得其解: 一道继承加权限的题目 怎麼實現int型參數傳地址 请教用java从properties文件中读取属性字段的方法? 想想而已 急求键盘排列方法.
public static void main(String[] arg) {
double d = 1.22354564;
int k = 1;
double tmp = d * k;
while(tmp % 1 != 0) {
k *= 10;
tmp = d * k;
}
k /= 10;
tmp = Math.ceil(d * k) / k;
System.out.println(tmp);
}
BigDecimal decimal = new BigDecimal("1.23");
System.out.println(decimal);
decimal = decimal.setScale(decimal.scale() - 1, BigDecimal.ROUND_HALF_UP);
System.out.println(decimal);
decimal = decimal.setScale(decimal.scale() - 1, BigDecimal.ROUND_CEILING);