visual round potency clase c# math

round - root c# math



¿Por qué usar Decimal.Multiply vs operador multiplicarse? (5)

Algunos idiomas no admiten operadores sobrecargados; esos deben llamar al método Multiplicar ().

decimal result = 100 * 200;

vs

decimal result = Decimal.Multiply(100, 200);


El operador * está sobrecargado para tipos decimales y es idéntico a Decimal.Multiply() . Sin embargo, el operador sobrecargado * requiere que al menos uno de los parámetros sea decimal. De lo contrario, se llama a algún otro operador * . En decimal result = 100 * 200 los tipos int se multiplican primero y luego se convierten a decimal. Si el resultado de la multiplicación es mayor que Int32.MaxValue , obtendrá un desbordamiento.

decimal d1 = 2147483647 * 2; // Overflow decimal d2 = 2147483647m * 2; // OK decimal d3 = Decimal.Multiply(2147483647, 2); // OK


El operador * está sobrecargado y llama a Multiply internamente. Realmente es solo una cuestión de legibilidad.


El uso de Decimal.Multiply obligará a la multiplicación a tomar entradas de tipo decimal lugar de cualquiera que sea el tipo que se está utilizando y se convierte a decimal .

Decimal.Multiply(decimal d1, decimal d2) y aplicará y generará el tipo decimal . Donde como * puedes hacer:

decimal result = yourDecimal * yourInt;

Esto le permite mezclar y combinar tipos en algunos casos y lo manejará todo por usted, pero no se garantiza que el tipo sea decimal dependiendo de cómo se defina el lado derecho.


No hay ningún requisito para que un lenguaje .NET admita directamente los decimales, pero en ese idioma todavía puede usar la estructura de System.Decimal. Como tampoco hay ningún requisito de que un operador de soporte de lenguaje .NET anule, los métodos son necesarios para permitir el uso completo en tal caso.