繁体   English   中英

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

[英]Convert decimal to unsigned decimal (or string?) in C#

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

UInt64 differenceamt = (UInt64)DifferenceAmt;

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

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

使用Math.Abs(differenceAmt)获得绝对值。

UInt64转换为UInt64 您的示例-10在UInt64的范围之外,并且对于UInt64范围之外的其他Decimal值,同样会失败。 还必须将值截断为整数。

有多种可用的方法可以做到这一点。 最简单的方法是使用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

另一种方法是将自定义格式器用于正数/负数。 但是在这种情况下,您必须指定自定义字符串格式。 有关更多信息: “;” 节分隔符

decimal x = -10.53m;
string s = x.ToString("#.##;#.##") // 10.53

您可以使用此:

Math.Abs(differenceAmt).ToString();

看到这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM