如何除以int
100?
例如:
int x = 32894;
int y = 32894 / 100;
为什么这会导致y
存在328
而不是328.94
?
当一个整数除以另一个整数时,算术作为整数算术执行。
如果您希望它作为浮点、双精度或十进制算术执行,则需要适当地转换其中一个值。例如:
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
适用于货币等人工数量,通常以十进制值开始。
因为 int 只是一个整数。试试这个。
int x = 32894;
double y = x / 100.0;
328.94 不是整数。整数/
除法向下舍入;这就是它的工作原理。
我建议你转换为十进制:
decimal y = 32894M / 100;
或带有变量:
decimal y = (decimal)x / 100;
因为你正在做整数除法。在 100 后面添加一个句点,你会得到一个双倍。
当您将两个整数相除时,结果是一个整数。整数没有小数位,所以它们只是被截断。
它的编程基础是int(整数)除法不同于float(浮点)除法。
如果你想要 .94 使用 float 或 double
var num = 3294F/100F