C#中的类型转换、显式转换为int和Convert.ToInt32
在我下面的代码中C#中的类型转换、显式转换为int和Convert.ToInt32,c#,types,C#,Types,在我下面的代码中 long Price = 148920000; long PRICE = 1000000; double Multiplier = 100.00; int Value = (int)(((double)Price / PRICE) * Multiplier); 我期望值为14892,但在C#中,它将达到14891 浮点算术id始终是近似值。使用Math.Round()、Math.Floor()或Math.天花()中的一种来控制double/float如何转换为任何int类型。
long Price = 148920000;
long PRICE = 1000000;
double Multiplier = 100.00;
int Value = (int)(((double)Price / PRICE) * Multiplier);
我期望值为14892,但在C#中,它将达到14891 浮点算术id始终是近似值。使用Math.Round()、Math.Floor()或Math.天花()中的一种来控制double/float如何转换为任何int类型。或者改为使用十进制。不是在mo的开发机器上,但是你能试试这个吗
long Price = 148920000;
long PRICE = 1000000;
double Multiplier = 100.00;
checked
{
int Value = (int)(((double)Price / PRICE) * Multiplier);
}
如果溢出,则应抛出错误
如果您不熟悉如何获取要转换的值,此答案将为您提供所需信息
long Price = 148920000;
long PRICE = 1000000;
double Multiplier = 100.00;
var Value = (Convert.ToInt32(Math.Round((double)Price / (double)PRICE) * Multiplier));
或
不使用var
关键字的另一个版本会产生相同的结果
long Price = 148920000;
long PRICE = 1000000;
double Multiplier = 100.00;
int Value = (int)(Math.Round((double)Price / (double)PRICE) * Multiplier);
Answer=14892
请不要使用仅大小写不同的变量名,除非您正在进行模糊代码竞赛。如果您想要精确的值,请使用十进制。这值得一读: