提问人:pengg 提问时间:9/9/2023 最后编辑:Eldarpengg 更新时间:9/9/2023 访问量:39
C# 从双重乘法转换结果,给出错误的结果 [重复]
C# Cast result from double multiplication which give wrong result [duplicate]
问:
谁能解释一下?
如图所示,乘法后,我应该得到 29.0,投射到短处,这应该给我 29,但我得到了 28
我做了关于选角的研究,但并没有真正得到答案
答:
1赞
Behnam Faghih
9/9/2023
#1
请注意,“A”被声明为双精度数据类型,这是一种可以存储小数的浮点类型。将“a”的值赋给声明为短整数据类型的变量“b”时,将发生类型转换。 在这种情况下,“A”的小数部分被截断,因为短数据类型只能保存特定范围内的整数。因此,“b”的值将为 28,而不是 29。
评论
0赞
pengg
9/9/2023
谢谢你的回答。我仍然感到困惑:即使发生类型转换截断,乘法后的结果也应该是 29.0。我还是应该得到 29 分吧?
0赞
Behnam Faghih
9/9/2023
这是将浮点数转换为整数类型时的预期行为。如果要保留小数部分并获取值 29,应考虑使用支持十进制值的数据类型,例如 decimal、float 或 double。
评论
var b = Convert.ToInt16(a);
不会将 but 四舍五入截断为 29。.99999