c# - puede - jerarquia de operadores en c sharp
El operador ''*'' no se puede aplicar a los operandos de tipo ''doble'' y ''decimal'' (4)
Cambie foodVATRate
a decimal
, también. No parece haber ninguna razón para que sea doble.
Recibo este mensaje en mi programa, pero no sé cómo solucionarlo. Busco en la red pero no encuentro nada que pueda ayudarme.
private double Price;
private int Count;
private double Vat;
private const double foodVATRate = 0.12, otherVATRate = 0.25;
private decimal Finalprice;
private decimal Rate;
public void Readinput()
{
Finalprice = (decimal)(Price * Count);
}
private void cal()
{
char answer = char.Parse(Console.ReadLine());
if ((answer == ''y'') || (answer == ''Y''))
Vat = foodVATRate;
else
Vat = otherVATRate;
Rate = Vat * Finalprice;
El operador ''*'' no se puede aplicar a los operandos de tipo ''doble'' y ''decimal'' es lo que aparece en Rate = Vat * Finalprice; y no se que pueda arreglarlo
Necesitas lanzar uno al otro. Mi conjetura es que tanto el precio como todas sus tasas de IVA deberían ser realmente decimales; el doble no es (generalmente) apropiado para tratar con cualquier tipo de valores monetarios.
No puedes multiplicar un decimal
por un double
. Puede solucionar esto por tipo de conversión, pero probablemente solo querrá seguir usando decimal
para todos los precios y tasas de IVA en todo.
El tipo decimal
fue diseñado para ser útil para los cálculos financieros, ya que ofrece una alta precisión al costo del rango reducido para el tamaño del tipo en bytes.
Prueba esto:
Rate = (decimal)Vat * Finalprice;