一个类似的问题Long in Float,为什么?这里没有回答我正在寻找的东西。
C# 标准允许从 long 到 float 的隐式转换。但是当表示为浮点数时,任何大于 2^24 的 long 都必然会失去其“价值”。C# 标准明确指出 long to float 转换可能会失去“精度”,但永远不会失去“幅度”。
我的问题是- 关于整数类型,“精度”和“量级”是什么意思。数字 n 与数字 n+1 是否完全不同,这与实数不同,其中 3.333333 和 3.333329 可能被认为足够接近以进行计算(即取决于程序员想要的精度)
- 不允许从 long 隐式转换到浮动对细微错误的邀请,因为它可能导致 long '默默地'失去价值(作为 C# 程序员,我习惯于编译器在保护我免受此类问题方面做得很好)
那么 C# 语言设计团队允许这种隐式转换的基本原理是什么?我在这里缺少什么来证明从 long 到 float 的隐式转换是合理的?