¿Hay alguna razón por la que un C# System.Decimal recuerde el número de ceros finales con los que se ingresó? Véase el siguiente ejemplo:¿Por qué un C# System.Decimal recuerda los ceros al final?
public void DoSomething()
{
decimal dec1 = 0.5M;
decimal dec2 = 0.50M;
Console.WriteLine(dec1); //Output: 0.5
Console.WriteLine(dec2); //Output: 0.50
Console.WriteLine(dec1 == dec2); //Output: True
}
los decimales se clasifican como iguales, aún dec2 recuerda que se ha introducido con un cero adicional. ¿Cuál es la razón/propósito para esto?
Por las razones explicadas, 0.5 y 0.50 * tienen * información diferente. La precisión es ** muy ** relevante en algunos campos, a saber, las matemáticas y la química. – ANeves
Esa sería una buena teoría, excepto que la cantidad de dígitos devueltos por las operaciones de la división no tiene nada que ver con la cantidad de dígitos en el divisor o dividendo. Para la mayoría de las situaciones que requieren multiplicación o división, parecería que 'Decimal' debería ofrecer un método para multiplicar por' Doble', con el resultado redondeado a un nivel de precisión específico; si el resultado no puede adaptarse a tanta precisión, lanza una excepción. De lo contrario, 'Decimal' pierde sus ventajas semánticas frente a los valores de escala hasta 100 (o el número de subdivisiones por unidad de moneda) y el uso de' Double'. – supercat
@supercat: Hmm ... tienes razón sobre la parte de la división, sin duda. Todavía podría ser que la teoría es la capacidad de poder representar un número y su precisión, pero la práctica es que no está bien implementado para la aritmética. (Todavía podría ser útil al propagar datos de otra fuente, por supuesto.) –