5

我正在尝试显示商品的价格。价格乘以商品数量。

int itemCost = itemPrice * itemQuanity;

当项目的数量变得太多时,itemCost 变为负数,这意味着我需要更大的 int,所以我将 int 更改为使用 int64。

int64 itemCost = itemPrice * itemQuantity;

通过此更改,它仍然输出负 itemCost,我做错了什么?

我尝试使用

System.Convert.ToInt64(int value);

但这似乎也不起作用,当达到 int.MaxValue 时仍然得到一个负数。

4

3 回答 3

10

itemPrice和是什么类型itemQuantityint如果它们int都是int64. 那时,转换(和溢出)已经发生,并且转换为 anint64无济于事。

在相乘之前,您需要确保两个操作数都是 int64 。所以如果他们还没有,

int64 itemCost = ((int64) itemPrice) * ((int64) itemQuantity);
于 2013-02-26T17:16:54.483 回答
7

你可以试试:

long itemCost = (long)itemPrice * (long)itemQuantity;

int发生的事情是,即使您将结果存储在 a中,您仍然尝试将 2 相乘long。将它们投射到long第一个。

于 2013-02-26T17:15:49.383 回答
5

您的第二行代码是计算itemPrice * itemQuantity Int32 值的乘积,然后将该结果转换为 Int64。在进行乘法long 之前,您需要将值转换为。

long itemCost = itemPrice * (long) itemQuantity;
于 2013-02-26T17:16:44.080 回答