c#中的类型转换,显式转换为int和Convert.ToInt32
本文关键字:int Convert ToInt32 显式转换 类型转换 | 更新日期: 2023-09-27 18:03:39
在我下面的代码
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.Ceiling()中的一个来控制如何将double/float类型转换为任何int类型。或者使用Decimal
如果你不熟悉如何获得你想要转换的值这个答案会给你你正在寻找的
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
不是在开发机器上,但是您可以尝试一下吗?
long Price = 148920000;
long PRICE = 1000000;
double Multiplier = 100.00;
checked
{
int Value = (int)(((double)Price / PRICE) * Multiplier);
}
如果溢出,
应该抛出错误。http://msdn.microsoft.com/en-gb/library/74b4xzyw (v = vs.71) . aspx