Tag: 长整型

为什么C#允许* Long隐式*从Long转换为Float,这可能会失去精度?

一个类似的问题Long in Float,为什么? 这里没有回答我在寻找的东西。 C#标准允许从long到float的隐式转换。 但任何长于2 ^ 24的长度在表示为浮动时必然会失去其“价值”。 C#标准清楚地表明,长期浮动转换可能会失去“精确度”但永远不会失去“幅度”。 我的问题是 关于积分类型,“精确”和“幅度”的含义。 数字n与数字n + 1完全不同,与实数不同,其中3.333333和3.333329可能被认为足够接近计算(即取决于程序员想要的精度) 不允许隐式转换从long到浮动邀请到微妙的错误,因为它可能导致长期“默默地”失去价值(作为一个C#程序员,我习惯于编译器在防范这些问题方面做得非常出色) 那么C#语言设计团队允许这种转换是隐含的理由是什么呢? 我在这里失踪的是什么certificate从长期到浮动的隐性转换是正确的?