奇怪的错误"运营商' *'不能应用于' double'类型的操作数和'十进制'"

时间:2014-09-27 10:40:21

标签: c#

好的,我有这段代码:

decimal jewels = numericUpDown1.Value;
int price = 0.35 / 100 * jewels;
MessageBox.Show(price.ToString());

但是由于一些奇怪的原因我得到了这个错误:`

  

运算符'*'不能应用于'double'和'decimal'类型的操作数。

我尝试过使用所有不同的类型,比如float,double和int,但它们都不起作用!

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

这将有效,

decimal price = Convert.ToDecimal(0.35 / 100) * jewels;

如果你想要价格为int:

int price = Convert.ToInt32(Convert.ToDecimal(0.35 / 100) * jewels);

并且..我认为珠宝不需要是小数,因为它的值来自数字向上控制,它总是int?

答案 1 :(得分:1)

您无法将decimal值乘以double值。如果使用decimal个文字值,则乘法运行正常:

0.35M / 100M * jewels

要将其分配给int变量,您必须将结果转换为int

int price = (int)(0.35M / 100M * jewels);

您可能希望首先对decimal值进行舍入,因为只需将其转换为截断值:

int price = (int)Math.Round(0.35M / 100M * jewels);

答案 2 :(得分:0)

您需要专门从十进制转换为其他数字格式,例如double。所以试试:

int price = 0.35 / 100 * Convert.ToDouble(jewels);

或者:

int price = 0.35 / 100 * (double)jewels;