问题标签 [bigdecimal]

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 投票
18 回答
11257 浏览

programming-languages - 哪些编程语言支持任意精度算术?

哪些编程语言支持任意精度算术,你能举一个简短的例子来说明如何打印任意数量的数字吗?

0 投票
4 回答
54157 浏览

java - BigDecimal("0") 和 BigDecimal.ZERO 之间有区别吗?

对于新变量的比较或初始化,您使用其中的哪一个会有所不同吗?

我知道 BigDecimal.ZERO 是 1.5 的功能,所以这是一个问题,但假设我使用的是 1.5,这有关系吗?

谢谢。

0 投票
14 回答
44767 浏览

java - 用 Java 表示货币价值

我知道 BigDecimal 是在 Java 中表示货币价值的推荐最佳实践。你用什么?有没有你更喜欢使用的更好的库?

0 投票
3 回答
3744 浏览

c# - 非常非常大的 C# 浮点数

我正在做一些人口建模(为了好玩,主要是为了玩承载能力和物流功能的概念)。该模型适用于多个行星(目前大约有 100,000 个)。当人口达到一个星球的承载能力时,居民开始向附近的星球扩张,依此类推。

问题:100,000 多个行星可以容纳很多人。不仅仅是 C#Decimal可以处理的。由于我正在用这些数字做平均值和其他东西,我需要能够处理浮点数(或者我只使用 BigInt 库)。

有谁知道我可以使用的 BigFloatingPoint 类(或其他)?谷歌今天非常无助。我可能会编写一个运行良好的类,但如果存在这样的东西,我宁愿使用预先存在的东西。

0 投票
5 回答
31216 浏览

c# - 将小数提高到小数的幂?

.net 框架在 Math 类中提供了一种为 double 供电的方法。但是根据精度要求,我需要将小数提高到小数幂 [ Pow(decimal a, decimal b) ]。框架有这样的功能吗?有谁知道具有这种功能的库?

0 投票
5 回答
4762 浏览

java - “new BigDecimal(13.3D)”导致不精确的“13.3000000000000007105..”?

Java 怎么BigDecimal会这么痛苦?

是否存在需要结果 1 的情况?我知道 Java 1.5 改变了toString()方法,但这是预期的结果吗?

我也意识到BigDecimaldoubleValue()等,但我正在使用的库有用地使用 atoString()并且我无法改变它:-(

干杯。

0 投票
19 回答
41257 浏览

java - 如何处理 Java BigDecimal 性能?

我为生活编写货币交易应用程序,所以我必须使用货币值(遗憾的是,Java 仍然没有十进制浮点类型并且没有任何东西支持任意精度的货币计算)。“使用 BigDecimal!” ——你可能会说。我愿意。但是现在我有一些代码,其中性能一个问题,BigDecimal 比double原语慢 1000 多倍(!)。

计算非常简单:系统所做的是a = (1/b) * c多次计算(其中和a是定点值)。然而,问题在于这个。我不能使用定点算术,因为没有定点。而且不仅丑陋,而且速度缓慢。bc(1/b)BigDecimal result = a.multiply(BigDecimal.ONE.divide(b).multiply(c)

我可以用什么来代替 BigDecimal?我需要至少 10 倍的性能提升。我发现了其他优秀的 JScience 库,它具有任意精度的算术,但它甚至比 BigDecimal 还要慢。

有什么建议么?

0 投票
3 回答
6954 浏览

java - 将 Java BigDecimal 舍入到最近的间隔

我有一个 BigDecimal 计算结果,我需要将其四舍五入到最接近的指定间隔(在这种情况下,它是金融市场的刻度大小)。

例如价格 [Tick Size] -> 四舍五入的价格

谢谢。

更新:schnaader 的解决方案,翻译成 Java/BigDecimal 术语:

0 投票
8 回答
923 浏览

java - 如何处理接近1的数字的乘法

我有一堆浮点数(Java 双精度数),其中大部分非常接近 1,我需要将它们相乘作为更大计算的一部分。我需要做很多

问题是,虽然 Java 的双打对像这样的数字没有问题:

他们不能代表类似的东西:

因此,我迅速失去了精度(Java 的双打的限制似乎在 1.000000000000001 左右)。

我考虑过只存储减去 1 的数字,因此例如 1.0001 将存储为 0.0001 - 但问题是再次将它们相乘我必须加 1,此时我失去了精度。

为了解决这个问题,我可以使用 BigDecimals 来执行计算(转换为 BigDecimal,加 1.0,然后相乘),然后再转换回双精度数,但我非常担心这会对性能产生影响。

任何人都可以看到避免使用 BigDecimal 的方法吗?

为清楚起见进行编辑:这是针对采用梯度下降优化算法的大规模协同过滤器。准确性是一个问题,因为协同过滤器通常处理非常小的数字(例如,一个人点击产品广告的概率,可能是千分之一,或万分之一)。

速度是一个问题,因为协同过滤器必须在数千万个数据点上进行训练,如果不是更多的话。