C#:将int除以100

如何将int除以100?

例如:

 int x = 32894; int y = 32894 / 100; 

为什么这会导致y328而不是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" 

至于你是否应该使用decimaldoublefloat ,这取决于你想要做什么。 阅读我关于十进制浮点和二进制浮点的文章。 如果你正在处理高度和重量等“自然”量,那么通常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