在 x32 和 x64 平台上使用 .NET 时,我应该注意哪些常见数学错误?
使用 .NET 执行计算时应注意什么?
例如,我对浮点错误有所了解,但不熟悉这个 CodeProject 上的论坛帖子。我需要了解什么才能完成基于 .NET 的数学知识,以便我可以建议如何使用不同位大小的参数和结果。
What should I keep in mind when performing calculations using .NET?
For example, I know a little about floating point errors, but am unfamilliar with this forum post on CodeProject. What do I need to know to complete my knowledge of .NET-based math so that I can advise how to work with parameters and results of varying bit-sizes.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
永远记住,浮点存储二进制分数,即您的数字将用 2^(-n) 的求和序列表示,其中 n 是从 1 到(尾数大小)的任何整数,提升到某个指数 N。使用
decimal< /code> 用于财务计算。
另请记住,32 位处理器上的 64 位字读/写不是原子的,因此不是线程安全的。更一般地说,尽量不要期望共享的可变状态总是可以安全读取。
Always remember that floating point stores binary fractions, i.e. your number will be represented with a summation series of 2^(-n) where n is any integer from 1 to (mantissa size) raised to some exponent N. Use
decimal
for financial calculations.Also remember that 64-bit word read/writes on a 32-bit processor are not atomic and thus are not thread-safe. More generally, try your best to not expect that shared mutable state is always safe to read.
您需要记住,不同的数字类型具有不同的范围:查看静态
MinValue
和MaxValue
属性。如果您超出这些范围(通过加法、乘法或其他方式),那么答案将不是您认为应该的。 (数字从最大值回绕到最小值。)You need to remember that different numeric types have different ranges: take a look at the static
MinValue
andMaxValue
properties. If you exceed these ranges (by addition, multiplication or whatever) then the answers won't be what you think they should be. (Numbers wrap around from the maximum back to the minimum.)