我想写一个方法来转换decimal
尽可能最小的数字类型,而不会丢失任何数据。举些例子:
-
Convert(1)
应该返回一个byte
-
Convert(257)
应该返回一个short
-
Convert(1.1)
应该返回一个float
- 等等
该方法的输入始终是decimal
输出是以下任意 .NET 数字类型:sbyte
, byte
, short
, ushort
, int
, uint
, long
, ulong
, float
, double
, and decimal
.
我尝试过使用checked()
抓住OverflowException
,但是这种方法并不能防止损失。例如,checked((int)1.1)
不会抛出任何异常并返回1
!因此,这不是我想要的。
有什么推荐吗?
Update:预期的方法签名
public object Convert(decimal d)
{
// return ...
}
你可以尝试使用TryParse
short res;
decimal value = 8913798132;
bool s = short.TryParse(value.ToString(), out res); // returns false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)