簡體   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