![](/img/trans.png)
[英]to compare double and decimal should I cast double to decimal or decimal to double?
[英]Cast a Double Variable to Decimal
在進行貨幣開發時如何將double
為decimal
。 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);
嗯,這是一個老問題,我確實利用了此處顯示的一些答案。 盡管如此,在我的特定場景中,我想要轉換為decimal
的double
值可能通常大於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.