如果我明确地将十进制值转换为整数值,那么十进制值是否会被截断或者该值是否四舍五入?
例如:if d
= 8.89
int i = (int)d;
i
是8还是9 ??
答案 0 :(得分:1)
它会截断为8。
如果您想要圆形,可以使用以下内容:
int i = (int)Math.round(d);
答案 1 :(得分:1)
来自C#语言规范V5 1 §6.2.1显式数字转换:
对于从十进制到整数类型的转换,源值向零舍入到最接近的整数值,并且该整数值成为转换的结果。如果生成的整数值超出目标类型的范围,则抛出System.OverflowException。
其他类型为decimal
的语言/平台可能有不同的规则:在每种情况下,您都需要检查特定于该语言/平台的规则。例如。 T / SQL的规则是different:
默认情况下,SQL Server在将数字转换为具有较低精度和比例的小数或数值时使用舍入。但是,如果SET ARITHABORT选项为ON,则SQL Server会在发生溢出时引发错误。仅精度和比例的损失不足以引起错误。
1 包含在Visual Studio 2013中。