java - Java 的 BigDecimal 是否像 C++ 中的 long double 那样利用硬件架构?

标签 java floating-point precision bigdecimal long-double

据我了解,C++ 中的 long double 实际上利用了硬件架构(至少对于某些架构而言)。 Java 中的 BigDecimal 是否对足够小的输入执行此操作?

最佳答案

Does BigDecimal in Java do this for small enough inputs?

不,它不能。 float 是有损的,而每个 BigDecimal 都有一个关联的精度,并且可以精确表示低于该精度的任何数字。没有可以有用地呈现为 float 的“足够小的输入”,因为即使您碰巧有一个可以用浮点表示法精确表示的 BigDecimal 值,您很难对该值执行任何类型的操作并保持指定的精度。

换句话说,BigDecimal目的是在牺牲速度的同时提供精度。这与浮点完全相反,浮点牺牲精度以提高速度。


听起来你在问 Java 是否提供了一种方法来处理 long double 大小的 float ,以及 there is not .我们可以从事实中得出结论,这并不是说 JDK 作者从未觉得有必要添加到该语言中。

关于java - Java 的 BigDecimal 是否像 C++ 中的 long double 那样利用硬件架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39109613/

相关文章:

java - 在测试失败之前尝试在 before() 方法上运行重试

java - 更改 Dropwizard 默认端口

c++ - std::min(0.0, 1.0) 和 std::max(0.0, 1.0) 会产生未定义的行为吗?

C++浮点精度

Matlab - 将向量与 setdiff 进行比较,同时忽略低于 eps 的精度

java - Java 中的功率精度

java - Jnlp 错误 : Could not find main class

java - 可扩展的 ruby 应用程序

javascript - 将无符号字节值转换为从 -1 到 1 的 float

c# - Assert.AreEqual() 与 System.Double 变得非常困惑