如何将int
除以100?
例如:
int x = 32894;
int y = 32894 / 100;
为什么这会导致y
成为328
而不是328.94
?
答案 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"
至于您是否应该使用decimal
,double
或float
,这取决于您尝试做什么。阅读decimal floating point和binary 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