C#:将int除以100

时间:2011-03-09 07:06:09

标签: c# divide

如何将int除以100?

例如:

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

为什么这会导致y成为328而不是328.94

5 个答案:

答案 0 :(得分:18)

当一个整数除以另一个整数时,算术将作为整数运算执行。

如果希望它以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,这取决于您尝试做什么。阅读decimal floating pointbinary floating point上的文章。通常double适用于处理“自然”数量,如身高和体重,其中任何值实际上都是近似值; decimal适用于人工数量,例如money,通常以十进制值开头。

答案 1 :(得分:3)

因为int只是一个整数。试试这个。

int x = 32894;
double y = x / 100.0;

答案 2 :(得分:3)

328.94不是整数。整数/分成两半;这是它的工作原理。

我建议你转换为十进制:

decimal y = 32894M / 100;

或变量:

decimal y = (decimal)x / 100;

答案 3 :(得分:0)

因为你正在进行整数除法。在100之后添加一段时间,你会得到一个双倍的。

分割两个整数时,结果为整数。整数没有小数位,所以它们只是被截断了。

答案 4 :(得分:0)

其编程基础,即int(整数)除法与浮点(浮点)除法不同。

如果你想要.94使用float或double

var num = 3294F/100F