Java 带大十进制的三角数学没用? 使用BigDecimal乘以sin、cos、tan或任何其他三角法时,精度是否会降低 将BigDecimal与有理数一起使用是否有效 我知道,BigDecimal用于“精确货币计算”()。我知道,有些项目像或。当使用double表示没有BigDecimal的值时,差异在哪里?因为拥有BigDecimal并转换为double仅仅是因为我需要它的exp,这有意义吗。使用三角法时会丢失精度。还是不

Java 带大十进制的三角数学没用? 使用BigDecimal乘以sin、cos、tan或任何其他三角法时,精度是否会降低 将BigDecimal与有理数一起使用是否有效 我知道,BigDecimal用于“精确货币计算”()。我知道,有些项目像或。当使用double表示没有BigDecimal的值时,差异在哪里?因为拥有BigDecimal并转换为double仅仅是因为我需要它的exp,这有意义吗。使用三角法时会丢失精度。还是不,java,bigdecimal,Java,Bigdecimal,问题是:对“有理数”使用BigDecimal有意义吗?JDK不提供三角数学方法(sin、cos、log、exp等)的“精度设置”。 这就是诸如“ApFloat”或“BigMath”等LIB的原因。我相信您已经意识到,在内存中存储任何实数在某种程度上本质上是不精确的。您检测到的不精确程度是多少?你需要精确到什么程度的计算?实际上,我使用的是;MathContext数学上下文=新的MathContext(40,四舍五入模式,上下半);并希望保持这种精度。我是否需要这些外部lib,或者java在使用三

问题是:对“有理数”使用
BigDecimal
有意义吗?
JDK不提供三角数学方法(sin、cos、log、exp等)的“精度设置”。


这就是诸如“ApFloat”或“BigMath”等LIB的原因。

我相信您已经意识到,在内存中存储任何实数在某种程度上本质上是不精确的。您检测到的不精确程度是多少?你需要精确到什么程度的计算?实际上,我使用的是;MathContext数学上下文=新的MathContext(40,四舍五入模式,上下半);并希望保持这种精度。我是否需要这些外部lib,或者java在使用三角函数方法时是否会处理这些lib?“在内存中存储任何实数在某种程度上是天生不精确的”。范围是什么?它与处理器有关吗?与处理器无关。您将如何在您喜欢的任何数据结构中存储pi?如何将1/3存储为大十进制?显然,使用指定的精度。您必须从头开始使用BigDecimal.add和BigDecimal.multiply等方法编写自己的trig函数。就像标准Java.lang.Math trig函数是如何实现的一样。但是请注意,BigDecimal trig函数将比java.lang.Math方法慢得多。