问题标签 [mathcontext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
81548 浏览

java - java.math.MathContext 的使用

最近我尝试理解java.math.MathContext的使用但未能正确理解。是否用于四舍五入java.math.BigDecimal。如果是,为什么不四舍五入十进制数字,甚至尾数部分。

从 API 文档中,我了解到它遵循和规范中指定的标准,ANSI X3.274-1996ANSI X3.274-1996/AM 1-2000我没有让它们在线阅读。

如果您对此有任何想法,请告诉我。

0 投票
1 回答
62 浏览

javascript - 如何替换子字符串的所有实例,但只替换 JS 中的整个世界?

例如这个函数

将从这里返回

我的猫头上有顶帽子。

对此

我的骗子头上有名。

但我想回来

我的猫头上戴着一顶帽子。

0 投票
0 回答
717 浏览

scala - BigDecimals 中的 MathContexts - ScalaCheck 生成器创建无法序列化然后反序列化的 BigDecimals。如何正确使用 MathContexts?

在 Scalacheck 中发现了一个问题,它arbitrary[BigDecimal]生成BigDecimal无法转换为Strings 然后再转换为 sBigDecimal的 s,我正在尝试与创建者一起寻找解决方案,但我不确定MathContexts 是如何来的玩。

原始生成器如下所示:

问题在于BigDecimal使用的构造函数反转了scale参数的符号,从而使Int.MinValue变成scale大于 2^32 -1。

修复的核心是通过 中的位数增加下限unscaledVal,但我只是想到了一种方法来做到这一点MathContext.UNLIMITED。如果我们这样做,我担心我们会错过生成器的鲁棒性:

那么,如果我们想继续使用其他MathContext的,我们必须做些什么来确保我们正确地使用它们呢?

0 投票
1 回答
650 浏览

java - BigDecimal 和 MathContext 的行为不一致

我看到 BigDecimal 的一些奇怪行为当我使用 mathContext 进行除法时,输出与我通过直接提供比例和舍入模式进行除法时不同 这是我认为应该提供相同输出的示例

输出:

使用 MathContext 时,似乎对比例的处理方式有所不同。或者我不明白什么时候使用哪个。

0 投票
1 回答
240 浏览

java - 是否存在 Bigdecimal 和 MathContext.DECIMAL32 不能提供正确结果的情况?

System.out.println("Result="+new BigDecimal(((63.19* 15) + (63.37* 5))).divide(new BigDecimal(15 + 5), MathContext.DECIMAL64).doubleValue());

结果=63.23499999999999

但是随着MathContext.DECIMAL32我们得到正确的结果,请参见下文:

System.out.println("Result="+new BigDecimal(((63.19* 15) + (63.37* 5))).divide(new BigDecimal(15 + 5), MathContext.DECIMAL32).doubleValue());

结果=63.235

0 投票
2 回答
480 浏览

java - 加法、减法和乘法需要数学上下文?

首先,我的搜索能力可能没有我希望的那么好,所以这种问题可能已经存在。如果是这样请告诉我..

请参阅下面的代码:

对比

在哪些情况下我真的需要一个数学上下文(除部门除外)?

除非我划分某些东西,否则我从不使用数学上下文。据我所知,这总是有效的,那么这里的缺点可能是什么?我需要关于加法、减法和乘法的数学上下文吗?我对 BigDecimal 不太了解,我只是想用它来避免丢失任何信息,比如使用双打时。正如我有时在添加某些东西时看到带有 mathcontext 的代码,我太害怕仅仅删除它,因为我认为它是无用的......


我读了那个问题,但没有真正找到我的具体问题的正确答案......我从没有 mathcontext 的 BigDecimals 开始,然后用它们计算。所以我的问题是,在信息丢失/精度等方面,我是否会有缺点?或者这只会导致最大的信息,就是这样?

编辑:我不想四舍五入,从来没有。当然,在像 1/3 这样的除法的情况下,我必须这样做,但在加法、乘法和减法的情况下,我不需要任何舍入。那么在任何情况下我都需要数学上下文吗?

0 投票
1 回答
1884 浏览

java - MathContext.DECIMAL32 vs MathContext.DECIMAL64,使用哪一个,为什么?

我应该使用MathContext.DECIMAL32orMathContext.DECIMAL64吗?我查看了文档,但我也无法真正理解何时使用。

我使用 BigDecimal 来表示我想应用于一定金额的百分比。像这样的东西:

我正在使用 oracle java 1.8, ubuntu 14.04, Intel core i7 (64bit)

0 投票
1 回答
177 浏览

java - IBM java8 BigDecimal 浮动问题与 MathContext.DECIMAL64

IBM java 8 中的 BigDecimal 在使用 MathContext.DECIMAL64 添加浮点十进制数时计算不正确的值。下面是示例代码

上面的代码打印为 1.000000000000000 而不是 1.004166666666666667

但是,在上面的最后一行代码中,如果我删除 MathContext,它会返回正确的值 1.004166666666666667。

注意:使用相同的JVM调试上述代码时,在调试模式下,该值也是1.004166666666666667。

问题:为什么它会导致 JVM 在有/没有 MathContext 或在调试模式下返回不同的值?

使用 IBM JDK 1.6、1.8 和 Oracle JDK 1.8 进行测试。仅在 IBM JDK 1.8 中遇到此问题

IBM JDK 1.8 下面有这个问题

java 版本“1.8.0”Java(TM) SE 运行时环境(构建 pwa6480sr3-20160428_01(SR3))IBM J9 VM(构建 2.8,JRE 1.8.0 Windows 7 amd64-64 压缩参考 20160427_301573(禁用 JIT,禁用 AOT)J9VM - R28_Java8_SR3_20160427_1620_B301573 GC - R28_Java8_SR3_20160427_1620_B301573_CMPRSS J9CL - 20160427_301573) JCL - 20160421_01 基于 Oracle jdk8u91-b14

0 投票
2 回答
140 浏览

java - 精确计算黄金比例

我的任务是计算黄金比例 (phi = (1+ sqrt(5))/2)。但是我需要用大约 50 个小数位/小数位来计算它,然后将结果四舍五入到 30 个小数位并在控制台上打印出来。我可以使用 BigDecimal 和 MathContext。有谁知道如何计算它?我现在迷路了。谢谢

0 投票
2 回答
425 浏览

java - 如何在 Java 中为 Math.Context 设置比例?

我在编码中使用 Math.Context。现在的问题是 Math.Context 正在计算小数点后的所有内容。我想为 Math.Context 定义 8 的比例(表示小数点后 8 位)。请注意,我不是在寻找精确度。我知道如何定义精度。我需要规模。

这是我的 Math.Context 代码行: