如何决定使用什么 - 双倍或小数?

jav*_*red 17 .net c#

可能重复:
十进制vs双! - 我应该使用哪一个?何时使用?

double在我的交易软件中使用价格类型.我注意到有时会出现奇怪的错误.如果价格在"点"之后包含4位数,则会出现,如2.1234.

当我从我的程序"2.1234"发送市场订单出现在"2.1235"的价格.

我不使用,decimal因为我不需要"极端"精度.我不需要将"2.00000000003"与"2.00000000002"区分开来.我需要一个点后最多6位数.

问题是 - 线路在哪里?什么时候用decimal

我应该decimal用于任何金融业务吗?即使我只需要点后一位数字?(1.1 1.2等)

我知道decimal很慢,所以double除非decimal绝对需要,否则我更愿意使用.

R. *_*des 30

每当您处理您想要(并且可以)完全表示在基数10中的数量时,请使用小数.这包括货币价值,因为您希望2.1234完全表示为2.1234.

如果您不需要在base-10中使用精确表示,请使用double.这通常适用于处理测量,因为这些已经是近似值,而不是精确量.

当然,如果基数10中的确切表示对您来说不重要,则会考虑其他因素,根据具体情况,这些因素可能或可能不重要:

  • double有更大的范围(它可以处理非常大和非常小的幅度);
  • 十进制有更多精度(有更多有效数字);
  • 您可能需要使用double来与一些不知道小数的旧API进行交互;
  • double比十进制快;
  • decimal具有更大的内存占用;

  • 而且对于你的清单:如果你需要代表真正巨大或微小的数字,那么双端在顶端和底端都有更大的范围. (2认同)

Naw*_*waz 6

如果需要准确性且重要,请使用decimal.

如果准确性不重要,那么你可以使用double.

在您的情况下,您应该使用decimal,作为其财务问题.


Ser*_*hei 5

对于财务操作我总是使用小数类型