Colt Java 矩阵库中的浮点错误

发布于 2024-07-14 03:44:27 字数 36 浏览 3 评论 0原文

如何避免使用 Colt 矩阵库执行的财务计算中的浮点错误?

How do I avoid floating point errors in financial calculations performed with Colt matrix libraries?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

云朵有点甜 2024-07-21 03:44:27

关于浮点类型的肮脏之处的一些重要阅读:每台计算机都有什么科学家应该了解浮点算术

以及更多 Java 风格的内容:Java 的原理浮点在任何地方都会伤害每个人

Some essential reading about the nastiness of floating point types: What Every Computer Scientist Should Know About Floating Point Arithmetic

And something more Java flavoured: How Java’s Floating-Point Hurts Everyone Everywhere

黑白记忆 2024-07-21 03:44:27

对于金融领域,更常见的是使用 BigDecimal 和相关类。 无论如何,浮点数和双精度数都非常容易受到舍入错误的影响。

您可能想查看 Apache Commons Math 如果您决定尝试 BigDecimal。

For financials it's more common to use BigDecimal and related classes. float and doubles are in any case very susceptible to rounding errors.

You may want to look at Apache Commons Math if you decide to give BigDecimal a try.

怀念你的温柔 2024-07-21 03:44:27

一种常见的技术是使用整数并自己记录小数。
例如,您可以决定所有货币金额均以小数点后 3 位的精度表示。 不要写:

double dollars = 10.05d;

您可以写:

int dollars = 10050;

因此,当您想打印金额时,

System.out.println( dollars/100d );

One common technique is to use integers and keep track of the decimals yourself.
For example you can decide that all you currency amount will be represented with 3 decimal points accuracy. So instead of writing:

double dollars = 10.05d;

you write

int dollars = 10050;

and when you want to print the amount:

System.out.println( dollars/100d );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文