我试图将整数除以十进制/浮点数/双精度数。我可以使用:int Num1 = 300 / 2;
来分割整数,但是当我尝试制作那个" 2"一个小数,它不会工作。我见过有人提到这样做int Num1 = 300 / ((float)1.25);
。老实说,这对我没有任何意义......我也试过int Num1 = Decimal.Divide(300, 1.25);
但没有任何运气..
答案 0 :(得分:4)
问题在于您尝试将结果保存为int
。试试这个:
float result = 300 / (float)2;
float result = 300 / (float)1.25;
或者更简洁(f
是编译器发出的float
常量信号):
float result = 300 / 2f;
float result = 300 / 1.25f;
请注意float
与decimal
非常不同,两者都有其优点。要使用小数:
decimal result = decimal.Divide(300, 1.25);
或者这个(m
是编译器发出的decimal
常量信号):
decimal result = decimal.Divide(300m, 1.25m);
答案 1 :(得分:2)
简单地说:
答案 2 :(得分:1)
您正在尝试将结果存储为整数。而是使用double作为变量的类型来存储结果:
double Num1 = 300 / 2;
double Num1 = 300 / 1.25;
答案 3 :(得分:0)
int
只能存储整数。当您将整数除以小数时,输出将是小数(即使您使用4.00
,因为存储浮点的方式)。
这不会编译
int Num1 = 300 / ((float)1.25);
即使您正在构建显式浮点数(否则1.25将是double
),您尝试将其存储在int
类型的变量中。编译器不会自动执行此操作,因为implicit conversion doesn't exist会为您float
投射int
。因此,您需要告诉编译器您不介意丢失精度并将其转换为int
int Num1 = (int)(300 / ((float)1.25));
或者您可以将Num1
的类型更改为浮动。
float Num1 = 300 / ((float)1.25);