首页 > 编程知识 正文

javasetscale,有人对麻药不起作用

时间:2023-05-06 09:20:47 阅读:30580 作者:987

最近,使用BigDecimal进行四舍五入时,发现setScale ()方法设置的精度值不起作用。 代码如下。

错误代码

double d=7.199999999999999;

bigdecimal decimal=new bigdecimal (string.value of (d );

decimal.setscale(2,BigDecimal.ROUND_HALF_UP );

system.out.println (decimal.scale (;

系统. out.println (decimal.doublevalue ();

system.out.println (decimal.tostring ();

上述代码目的:输出7.199999999999999,保留两位小数。 输出结果:

15

7.1999999999

7.1999999999

decimal.setscale(2,BigDecimal.ROUND_HALF_UP ); 没有发挥作用。

正确的代码

double d=7.199999999999999;

bigdecimal decimal=new bigdecimal (string.value of (d );

//重新生成了新对象

bigdecimal decimal2=decimal.set scale (2,BigDecimal.ROUND_HALF_UP );

system.out.println (“—————decimal 13354———”

system.out.println (decimal.scale (;

系统. out.println (decimal.doublevalue ();

system.out.println (decimal.tostring ();

system.out.println (“—————decimal 23354———”;

system.out.println (decimal2. scale (;

系统. out.println (decimal2. doublevalue ();

系统. out.println (decimal2. tostring ();

与错误代码不同,decimal2接收decimal.setscale(2,BigDecimal.ROUND_HALF_UP )的结果,并操作decimal2以输出以下内容:

—————decimal1————-

15

7.1999999999

7.1999999999

—————decimal2————-

2

7.2

7.20

总结

decimal.setscale(2,BigDecimal.ROUND_HALF_UP )生成新对象。 请注意,设置的精度值仅对新对象有效,对原始对象无效。 通常,可以使用链式方法创建新对象并设置精度。

bigdecimal decimal=new bigdecimal (string.value of (d ) ).setScale(2) 2,bigdecimal.round _ half _ u u u up );

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。