将 double
转换为 float
总是会产生相同的结果,还是会有一些“舍入差异”?
比如x
在
float x = (float)0.123456789d;
总是相同的值?
将 float 转换为 double,然后将其转换回 float 会怎么样。 ( float )(双)someFloat
?
最感兴趣的是 C# 中的结果,但如果您知道它在其他语言上的工作原理,请随时分享。
最佳答案
结果不应依赖于语言,除非语言偏离 IEEE 规范。
所有 float 都可以精确地表示为 double ,因此从 float 到 double 再到 float 的往返应该产生与您开始时相同的值。
类似地,将任何 double 值转换为 float 应该始终产生相同的结果,但是,当然,有许多不同的 double 值会被截断为相同的 float 值。
关于c# - 将 double 转换为 float 是否总是返回相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9743044/