如果十进制值大于C#中的float,如何抛出异常

时间:2017-08-26 05:34:44

标签: c#

如果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(没有浮点数)?

1 个答案:

答案 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