您的浮动声明包含两个部分:
- 它声明变量
timeRemaining
的类型为float
。 - 它将值分配
0.58
给此变量。
该问题出现在第2部分中。
右侧将自行评估。根据C#规范,包含不带后缀的小数点的数字将解释为
double。
因此,我们现在有了一个
double要分配给type变量的值
float。为此,必须存在从
double到的隐式转换
float。没有这种转换,因为您可能(在这种情况下确实)会在转换中丢失信息。
原因是编译器使用的值不是真正的0.58,而是最接近0.58的浮点值,对于来说恰好是0.57999999999999978655962351581366
…对于
double和恰好是0.57999994605757796478271484375
float。
严格来说,
f不需要。您可以
f通过将值强制转换为来避免使用后缀
float:
float timeRemaining = (float)0.58;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)