簡體   English   中英

要比較double和decimal,我應該將double轉換為十進制或十進制來加倍?

[英]to compare double and decimal should I cast double to decimal or decimal to double?

我需要比較兩個值。 一個值是price代表的東西目前價格等decimal ,因為你實際上可以通過這種價格買進或賣出什么東西。

另一個值是estimatedPrice這是數學計算的結果,所以double ,因為它只是estimation ,你不能真正做任何“行動”這個esitmatedPrice

現在我想買price < estimatedPrice

那么我應該將價格加倍或估計價格為十進制嗎?

我明白在投射后我會得到“輕微的另一個”數字,但似乎我沒有其他選擇。

這取決於數據。 十進制具有更高的精度; 雙倍有更大的范圍。 如果double可能在十進制范圍之外,則應該將十進制數轉換為double(或者實際上,如果double值超出小數范圍,您可以編寫一個返回結果而不進行轉換的方法;請參閱下面的示例)。

在這種情況下,雙值似乎不可能超出小數范圍,因此(特別是因為您正在使用價格數據),您應該將雙精度值轉換為十進制。

示例(可以使用一些邏輯來處理NaN值):

private static int Compare(double d, decimal m)
{
    const double decimalMin = (double)decimal.MinValue;
    const double decimalMax = (double)decimal.MaxValue;
    if (d < decimalMin) return -1;
    if (d > decimalMax) return 1;
    return ((decimal)d).CompareTo(m);
}

十進制vs雙! - 我應該使用哪一個?何時使用?

如果您更關心精度,請轉換為十進制。 如果你不是,那就選擇雙打。

我建議你轉換成十進制 因為看起來你想要操縱貨幣價值。 但我可以給出這個簡短的答案:為了准確(專門為金融應用程序操縱金錢價值)應用程序使用小數。 如果您喜歡更少的資源和更快的速度,請使用double。

我之前從未在軟件中使用過價格,但從我所聽到的情況來看,很多都是關於整數的。 例如,對於$ 1.23,將其存儲為整數123.當您將結果輸出給用戶時,將在最后完成到小數的轉換。

同樣,對於您的估計價格,您是否可以處理(比方說)大100倍的數字?

暫無
暫無

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

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