Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 十进制到整数的变量转换_C#_Variables_Type Conversion - Fatal编程技术网

C# 十进制到整数的变量转换

C# 十进制到整数的变量转换,c#,variables,type-conversion,C#,Variables,Type Conversion,如果我显式地将一个十进制值转换为一个整数值,十进制值会被截断还是会被舍入 例如:如果d=8.89 int i = (int)d; i是8还是9?它将截断为8 如果您想让它变圆,您可以使用以下方法: int i = (int)Math.round(d); 根据C语言规范V51§6.2.1明确的数字转换: 对于从decimal到integral类型的转换,源值向零舍入为最接近的整数值,该整数值成为转换的结果。如果生成的整数值超出目标类型的范围,则抛出System.OverflowExceptio

如果我显式地将一个十进制值转换为一个整数值,十进制值会被截断还是会被舍入

例如:如果
d
=8.89

int i = (int)d;
i
是8还是9?

它将截断为8

如果您想让它变圆,您可以使用以下方法:

int i = (int)Math.round(d);
根据C语言规范V51§6.2.1明确的数字转换:

对于从decimal到integral类型的转换,源值向零舍入为最接近的整数值,该整数值成为转换的结果。如果生成的整数值超出目标类型的范围,则抛出System.OverflowException

其他类型为
decimal
的语言/平台可能有不同的规则:在每种情况下,您都需要检查特定于该语言/平台的规则。例如,T/SQL的规则是:

默认情况下,SQL Server在将数字转换为精度和小数位数较低的十进制或数值时使用舍入。但是,如果启用了SET ARITHABORT选项,SQL Server将在发生溢出时引发错误。仅损失精度和刻度不足以引起误差



1包含在Visual Studio 2013中。

最有可能被截断。你用什么语言?另外,这甚至不是一个问题,在编译器前5秒钟就可以告诉你答案。我使用的是C#,但我想知道一般的编程规则,而不仅仅是一种特定的语言。但无论如何还是要感谢:)我不会说它的语言不可知,不同的编译器遵循不同的标准。例如,假设所有索引值都从0开始是不好的,lua肯定不遵循编程规则。
(int)Math.round(d)
。使用一个取整实现,它返回一个整数,然后不需要强制转换。