java基础类型中精度

java基础类型中精度目录 1 问题 2 初始化对象 3 格式化 4 比较 5 溢出 1 问题 当做一些对精度要求比较高的运算时 基本数据类型的 double 和 float 可能就不够用了 比如以下例子 Java 中使用了 IEEE754 标准计算浮点数 没有办法精确表示 0 1 等小数 导致精度丢失 2 初始化对象 当对精度要求比较高时

大家好,我是讯享网,很高兴认识大家。



目录

1、问题

2、初始化对象

3、格式化

4、比较

5、溢出


1、问题

当做一些对精度要求比较高的运算时,基本数据类型的double和float可能就不够用了。比如以下例子:

 
讯享网 

Java中使用了IEEE754标准计算浮点数,没有办法精确表示0.1等小数,导致精度丢失。

2、初始化对象

当对精度要求比较高时,我们可以使用BigDecimal,但在使用时需要注意,初始化对象时需要使用字符串,而不能使用直接的数值,对比如下两组代码:

错误用法:

讯享网

正确用法:

 

java基础类型中精度

3、格式化

格式化展示的同样也会出现精度问题。所以最好也使用BigDecimal进行格式化

讯享网

4、比较

BigDecimal的比较方法有两个,分别是equal和compareTo。equal同时比较了小数位数scale和精度precision,而compareTo则是比较值。所以当我们仅需要比较值的时候,最好使用compareTo。

同样的,当需要用到Set去重的时候,要使用TreeSet而不是HashSet,两者的判重方法不同,TreeSet使用compareTo。

5、溢出

如果预期可能会出现大数计算,最好使用BigInteger,或者使用Math类,通过溢出报错来做特殊处理。

小讯
上一篇 2024-12-31 16:53
下一篇 2024-12-25 14:44

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/4854.html