[英]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);
}
如果您更關心精度,請轉換為十進制。 如果你不是,那就選擇雙打。
我建議你轉換成十進制 。 因為看起來你想要操縱貨幣價值。 但我可以給出這個簡短的答案:為了准確(專門為金融應用程序操縱金錢價值)應用程序使用小數。 如果您喜歡更少的資源和更快的速度,請使用double。
我之前從未在軟件中使用過價格,但從我所聽到的情況來看,很多都是關於整數的。 例如,對於$ 1.23,將其存儲為整數123.當您將結果輸出給用戶時,將在最后完成到小數的轉換。
同樣,對於您的估計價格,您是否可以處理(比方說)大100倍的數字?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.