Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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
为什么117.5\19.5在vb.net中给我5?_Vb.net - Fatal编程技术网

为什么117.5\19.5在vb.net中给我5?

为什么117.5\19.5在vb.net中给我5?,vb.net,Vb.net,我需要将一些旧的vb.net项目转换为c#,并对\操作符的一些行为差异感到困惑 例如,我可以理解7\2=3(因为它接受结果的整数部分)。但是为什么117.5\19.5=5? 在我的计算器117.5/9=6.025..中,上面应该给出除5之外的6?根据除数和被除数必须是整数类型,并将在运算之前转换为它们。根据除数和被除数必须是整数类型,并将在操作之前转换为它们。Visual Basic.NET中的反向solidus运算符用于整数除法。由于除数和被除数都必须是整数类型(我假设您禁用了Option S

我需要将一些旧的vb.net项目转换为c#,并对
\
操作符的一些行为差异感到困惑

例如,我可以理解
7\2=3
(因为它接受结果的整数部分)。但是为什么
117.5\19.5=5?


在我的计算器117.5/9=6.025..中,上面应该给出除5之外的6?

根据除数和被除数必须是整数类型,并将在运算之前转换为它们。

根据除数和被除数必须是整数类型,并将在操作之前转换为它们。

Visual Basic.NET中的反向solidus运算符用于整数除法。由于除数和被除数都必须是整数类型(我假设您禁用了Option Strict),因此这些值会隐式转换为整数。所以
117.5\19.5
变成
118\20


我的第一个建议是打开OptionStrict以避免隐式转换。我的第二个建议是使用用于浮点除法的正向实线运算符,因为您无论如何都要除法为浮点数:
Dim foo As Double=117.5/19.5

Visual Basic.NET中的反向实线运算符用于整数除法。由于除数和被除数都必须是整数类型(我假设您禁用了Option Strict),因此这些值会隐式转换为整数。所以
117.5\19.5
变成
118\20


我的第一个建议是打开OptionStrict以避免隐式转换。我的第二个建议是使用向前的solidus运算符,它用于浮点除法,因为您无论如何都要将浮点除法:
Dim foo As Double=117.5/19.5

运算符要求整数除法。因此,必须首先将操作数转换为整数,然后将除法结果截断为整数。因此,您可能得到118\20=5。你不能完全确定,如果浮点分数.5向上或向下取整,如果该数字不是2的幂和,处理器必须对其进行近似处理。它是整数除法,因此在浮点上使用它没有实际意义numbers@HansPassant-难道
.5
不总是完全可表示的吗?因为它是
2^-1
?你是对的。大多数情况下,当用户在调试器中查看计算值时,会出现此类问题。非小数部分过大的数字是另一种角点情况。\运算符要求整数除法。因此,必须首先将操作数转换为整数,然后将除法结果截断为整数。因此,您可能得到118\20=5。你不能完全确定,如果浮点分数.5向上或向下取整,如果该数字不是2的幂和,处理器必须对其进行近似处理。它是整数除法,因此在浮点上使用它没有实际意义numbers@HansPassant-难道
.5
不总是完全可表示的吗?因为它是
2^-1
?你是对的。大多数情况下,当用户在调试器中查看计算值时,会出现此类问题。非小数部分过大的数字是另一种情况。