如果decimal的值大于float(没有浮点值),我想要抛出异常
下面的示例代码在整数
下工作正常(抛出overflowException)decimal a = decimal.MaxValue;
int b = checked(int.Parse(a.ToString()));
但此示例代码不会抛出任何异常
decimal a = decimal.MaxValue;
float b = checked(float.Parse(a.ToString())); // b is 7.92281625E+28
如何判断十进制值是否大于float(没有浮点数)?
答案 0 :(得分:5)
int b = checked(int.Parse(a.ToString()));
是检查某个值是否会导致OverflowException
的一种非常糟糕的方法,因为您不知道a
将如何表示为字符串。
相反,请使用cast:
decimal d = decimal.MaxValue;
int i = (int)d;
// Throws OverflowException
正如@Enigmativity和@CodeCaster在评论中指出的那样,decimal
的整数部分将总是适合float
:
decimal d = decimal.MaxValue;
float i = (float)d;
// No problem!
如果您只需删除decimal
的小数部分,则可以使用decimal.Truncate。