簡體   English   中英

將雙變量轉換為十進制

[英]Cast a Double Variable to Decimal

在進行貨幣開發時如何將doubledecimal M去哪兒了?

decimal dtot = (decimal)(doubleTotal);

您只將M用於數字文字,當您轉換它時,它只是:

decimal dtot = (decimal)doubleTotal;

請注意,浮點數不適合保持精確值,因此如果您先將數字相加,然后轉換為Decimal ,則可能會出現舍入錯誤。 您可能希望在將這些數字加在一起之前將它們轉換為Decimal ,或者首先確保這些數字不是浮點數。

您可以像這樣將 double 轉換為小數,而無需M文字后綴:

double dbl = 1.2345D;
decimal dec = (decimal) dbl;

你應該在聲明一個新的文字十進制值時使用M

decimal dec = 123.45M;

(沒有M , 123.45 被視為雙精度值並且不會編譯。)

使用默認轉換類: Convert.ToDecimal(Double)

Convert.ToDecimal(the double you are trying to convert);

嗯,這是一個老問題,我確實利用了此處顯示的一些答案。 盡管如此,在我的特定場景中,我想要轉換為decimaldouble值可能通常大於decimal.MaxValue 所以,我寫了這個擴展方法,而不是處理異常:

    public static decimal ToDecimal(this double @double) => 
        @double > (double) decimal.MaxValue ? decimal.MaxValue : (decimal) @double;

如果您不想費心處理溢出異常,則上述方法有效,並且如果發生這種情況,您只想保持最大可能值(我的情況),但我知道對於許多其他情況,這不是預期的行為並且可能需要異常處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM