zig*_*zag 8 .net c# floating-point decimal type-conversion
关于.NET的十进制数据类型确定性我有两个问题:
有decimal
型的计算跨平台的确定性?或者换句话说,decimal
类型上的数学运算是否会在所有平台上产生完全相同的结果?
是铸造decimal
号码float
或double
跨平台的确定性(强制转换总是会正好产生相同的结果)?
对这个问题的评论中有很多散布恐惧的内容。
首先,人们担心过去某个时候会出现某个 Mono bug。这个问题不仅已经得到解决,而且在 2021 年不要使用 Mono。.Net Core 和 .Net5 都是完全跨平台的。
然后还有可能GetHashCode
为不相等的十进制实例返回相等的值。是的,这就是GetHashCode
(实际上,所有哈希函数)的工作原理,否则您可以将任何任意数据类型压缩为 4 个字节。我建议您阅读一本有关哈希的书,而不是输入所有内容。
对于OP来说,没有必要听取那些人的意见或重新发明decimal
。使用起来非常安全。
归档时间: |
|
查看次数: |
389 次 |
最近记录: |