在 C# 中将十进制转换为无符号十进制(或字符串?)

Mel*_*nie 1 c# decimal type-conversion uint64

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

UInt64 differenceamt = (UInt64)DifferenceAmt;
Run Code Online (Sandbox Code Playgroud)

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

Ulu*_*rov 5

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

decimal x = -10.53m;
string s = Math.Abs(x).ToString(); // 10.53
Run Code Online (Sandbox Code Playgroud)

另一种方法是将自定义NumberFormatInfo与空NegativeSign一起使用。

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

另一种方法是使用自定义格式化程序来处理正数/负数。但在这种情况下,您必须指定自定义字符串格式。更多相关内容:“;” 节分隔符

decimal x = -10.53m;
string s = x.ToString("#.##;#.##") // 10.53
Run Code Online (Sandbox Code Playgroud)