0

我有一个变量 ,DifferenceAmt它是一个小数。它可以是消极的或积极的。我需要输出 的值DifferenceAmt,但如果它是负数则不带负号,作为字符串。DifferenceAmt我知道如何通过首先检查是否小于零来删除负号,如果是,则从第二个字符开始执行子字符串,但这似乎很麻烦。我尝试DifferenceAmt先转换为 UInt64,

UInt64 differenceamt = (UInt64)DifferenceAmt;

但我不断收到一条错误消息,指出该数字对于 UInt64 来说太大了(例如,即使它是 -10)。我怎样才能做到这一点?

4

4 回答 4

4

有多种可用的方法来做到这一点。最简单的方法是使用Math.Abs​​ 使用绝对值。

decimal x = -10.53m;
string s = Math.Abs(x).ToString(); // 10.53

另一种方法是使用带有空NegativeSign的自定义NumberFormatInfo

decimal x = -10.53m;
string s = x.ToString(new NumberFormatInfo { NegativeSign = string.Empty }); // 10.53

另一种方法是对正数/负数使用自定义格式化程序。但在这种情况下,您必须指定自定义字符串格式。更多信息:“;” 部分分隔符

decimal x = -10.53m;
string s = x.ToString("#.##;#.##") // 10.53
于 2014-06-05T17:15:31.043 回答
3

使用Math.Abs(DifferenceAmt).ToString();这将为您提供数字的绝对值并删除负号。

于 2014-06-05T16:28:28.633 回答
3

用于Math.Abs(differenceAmt)获取绝对值。

投射到UInt64将不起作用。您的 -10 示例超出了 的范围,对于 UInt64 范围之外的UInt64其他值,它同样会失败。Decimal它还必须将值截断为整数。

于 2014-06-05T16:33:28.543 回答
2

你可以使用这个:

Math.Abs(differenceAmt).ToString();

看到这个:

http://msdn.microsoft.com/en-us/library/a4ke8e73(v=vs.110).aspx

于 2014-06-05T16:30:39.967 回答