我有一个变量DifferenceAmt
,这是一个小数。它可以是消极的也可以是积极的。我需要输出DifferenceAmt
的值,但如果它是负数则不带负号,作为字符串。我知道如何通过首先检查DifferenceAmt
是否小于零来删除负号,然后从第二个字符执行子字符串,如果它是,但这看起来很麻烦。我已尝试首先将DifferenceAmt
转换为UInt64,
UInt64 differenceamt = (UInt64)DifferenceAmt;
但是我一直收到一条错误消息,说明该数字对于UInt64来说太大了(例如,即使它是-10,也是如此)。我怎么能这样做?
答案 0 :(得分:3)
使用Math.Abs(DifferenceAmt).ToString();
这将为您提供数字的绝对值并删除负号。
答案 1 :(得分:3)
使用Math.Abs(differenceAmt)
获取绝对值。
转换为UInt64
无效。您的-10示例超出了UInt64
的范围,对于UInt64范围之外的其他Decimal
值,它也同样失败。它还必须将值截断为整数。
答案 2 :(得分:3)
有多种方法可以做到这一点。 最简单的方法是使用Math.Abs使用绝对值。
decimal x = -10.53m;
string s = Math.Abs(x).ToString(); // 10.53
另一种方法是将自定义NumberFormatInfo与空NegativeSign一起使用。
decimal x = -10.53m;
string s = x.ToString(new NumberFormatInfo { NegativeSign = string.Empty }); // 10.53
另一种方法是使用自定义格式化程序来表示正/负数。但是在这种情况下你必须指定自定义字符串格式。更多相关信息:The ";" Section Separator。
decimal x = -10.53m;
string s = x.ToString("#.##;#.##") // 10.53
答案 3 :(得分:2)
您可以使用:
Math.Abs(differenceAmt).ToString();
看到这个:
http://msdn.microsoft.com/en-us/library/a4ke8e73(v=vs.110).aspx