c# - 将 double 转换为 float 是否总是返回相同的值?

标签 c# floating-point double rounding

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/

相关文章:

c# - 与 LINQ 相比,为什么 Array.Sort() 这么慢?

c# - VS 2013 数据库项目中的 EF

c++ - 对于 double 或 float 的总和,EXPECT_EQ 出错

iOS UIStepper 和 NSUserDefaults - 如何一起管理它们并使用双

c# - 为什么使用非十进制数据类型对金钱不利?

c - 动态分配的二维数组

c# - 如何让 Linq 只返回一次相同的重复行?

c# - 如何保留并检索外部登录提供商的access_token

math - float 学坏了吗?

c - 如何在没有 FPU 的机器上计算 float