C#:将int除以100
如何将int
除以100?
例如:
int x = 32894; int y = 32894 / 100;
为什么这会导致y
为328
而不是328.94
?
当一个整数被另一个整数除时,算术作为整数运算执行。
如果希望它以float,double或decimal算术执行,则需要适当地转换其中一个值。 例如:
decimal y = ((decimal) x) / 100;
请注意,我也改变了y
的类型 – 执行十进制算术然后将结果存储在int
中没有意义。 int
不可能存储328.94。
您只需要将其中一个值强制为正确的类型,然后另一个将被提升为相同的类型 – 例如,没有用于将小数除以整数的运算符。 如果你使用多个值执行算术运算,你可能想要将它们全部强制转换为所需的类型只是为了清楚 – 使用整数运算执行一个操作是不幸的,而另一个运算使用双重运算是不幸的。预计两者都是双倍的。
如果您正在使用文字,则可以使用后缀来指示类型:
decimal a = x / 100m; // Use decimal arithmetic due to the "m" double b = x / 100.0; // Use double arithmetic due to the ".0" double c = x / 100d; // Use double arithmetic due to the "d" double d = x / 100f; // Use float arithmetic due to the "f"
至于你是否应该使用decimal
, double
或float
,这取决于你想要做什么。 阅读我关于十进制浮点和二进制浮点的文章。 如果你正在处理高度和重量等“自然”量,那么通常double
是合适的,其中任何值都将是一个近似值; decimal
适用于人工数量,例如货币,通常用十进制值表示。
328.94不是整数。 整数/
分数向下舍入; 这就是它的工作原理。
我建议你转换为十进制:
decimal y = 32894M / 100;
或变量:
decimal y = (decimal)x / 100;
因为int只是一个整数。 试试这个。
int x = 32894; double y = x / 100.0;
因为你正在进行整数除法。 添加100后面的一段时间,你会得到一个双倍。
除以两个整数后,结果为整数。 整数没有小数位,所以它们只是被截断了。
它的编程基础是int(整数)除法与浮点(浮点)除法不同。
如果你想要.94使用float或double
var num = 3294F/100F