为了账号安全,请及时绑定邮箱和手机立即绑定

Java得到不舍入双精度的前2位十进制数字

Java得到不舍入双精度的前2位十进制数字

扬帆大鱼 2022-05-25 17:06:58
我想得到前 2 位小数(不四舍五入)。这是一个例子:49455.10937 --> 49455.10
查看完整描述

3 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

格式化为String是一项昂贵的操作(在性能方面),这可以通过数学运算来完成:


    double x = 49455.10937;

    x *= 100;  // moves two digits from right to left of dec point

    x = Math.floor(x);  // removes all reminaing dec digits

    x /= 100;  // moves two digits from left to right of dec point


查看完整回答
反对 回复 2022-05-25
?
PIPIONE

TA贡献1829条经验 获得超9个赞

double decimalValue = 49455.10937;

String decimalValueStr = String.valueOf(decimalValue);

int indexDot = decimalValueStr.lastIndexOf('.');

int desiredDigits=3;

String decimal = decimalValueStr.substring(0, (indexDot + 1) + desiredDigits);

decimalValue = Double.parseDouble(decimal);

System.out.println(decimalValue);

//49455.109 is console output (change desired digits)


查看完整回答
反对 回复 2022-05-25
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

您可以使用格式化程序来格式化双精度值,如下所示


StringBuilder sb = new StringBuilder();

Formatter formatter = new Formatter(sb, Locale.US);

Double value = 49455.10937;

System.out.println(formatter.format("The value: %.2f", value));


查看完整回答
反对 回复 2022-05-25
  • 3 回答
  • 0 关注
  • 196 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号