变量转换十进制到int

时间:2014-10-05 05:21:02

标签: c# variables type-conversion

如果我明确地将十进制值转换为整数值,那么十进制值是否会被截断或者该值是否四舍五入?

例如:if d = 8.89

int i = (int)d;

i是8还是9 ??

2 个答案:

答案 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中。