在java中有没有替换long double?

Sun*_*hoo 16 c java

我正在阅读C中的数据类型.我发现其范围long double超过double了java中的范围.对于非常庞大的数字,我们可以在C中使用long double.如果我想在java中存储相同的数字,我们必须做什么?我们可以使用哪种数据类型?

java中的double需要8个字节(64位)IEEE 754.它涵盖范围从4.94065645841246544e-324d到1.79769313486231570e + 308d(正或负).

longdouble in c takes 10 bytes (80 bits)
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我在java中有没有替换longdouble

Man*_*ani 11

虽然不是替代品,但您可以使用java.lang.math.BigDecimal.您可以大致存储数十亿个数字,直到内存不足为止.它是一个任意的精度类,它会变得你想要的大,直到你的计算机内存不足.

根据BigDecimal的文档:

不可变的,任意精度的带符号十进制数.BigDecimal由任意精度整数非标度值和非负32位整数标度组成,它表示小数点右侧的位数.BigDecimal表示的数字是(unscaledValue/10scale).BigDecimal提供基本算术,比例操作,比较,散列和格式转换的操作.

  • 永恒,任意精确......而且肮脏慢. (4认同)