2008-09-30 10 views

Respuesta

11

usted tiene que utilizar Decimal tipo de datos ..

La palabra clave decimal indica un tipo de datos de 128 bits. En comparación con los tipos de coma flotante, el tipo decimal tiene más precisión y un rango menor, lo que lo hace apropiado para cálculos financieros y monetarios.

+5

Usted sabe, no es "más precisión" que es importante, que es el tipo de precisión. El decimal se basa en una escala de 10 bases y siempre representará exactamente un número decimal dentro de su rango. Sin embargo, los tipos de flotantes se basan en una escala binaria y pueden estar describiendo una fracción que no forma parte de la base 10 – nedruod

2

puede ser posible a través de la reflexión, pero las razones que está ahí son para FromOACurrency() y ToOACurrency() métodos estáticos en System.Decimal, que es para convering desde/hasta el Ole Automation Currency tipo que 6 usos de Visual Basic.

7

Usar Decimal. Todas las funciones que proporciona Currency son métodos estáticos en Decimal, FromOACurrency y ToOACurrency.

-3

No se puede usar Decimal para Moneda. Te enfrentarás a problemas mayores más adelante cuando te dividas. Digamos si tiene $ 1 dividido en 3, que es 1/3 = 0.33 (redondeado), pero 3 x 0.33 = 0.99! = 1. Puede ser pequeño, pero cuando lo hace en contabilidad y apila sus hojas, será una gran figura. También es por eso que el comportamiento de redondeo arriba/abajo predeterminado en .Net (no estoy seguro acerca de otros lenguajes de programación) es el siguiente valor par, también llamado redondeo bancario, para minimizar el error en la contabilidad comparando con nuestra forma normal de redondeo "humano".

Lea esta página para obtener una explicación más clara y una clase especial para manejar dinero. Code Project : A Money type for the CLR

También sobre Rounding

+6

-1 porque esta respuesta es engañosa. Decimal es un tipo de datos especialmente creado para almacenar dinero correctamente. Hacer cálculos es un tipo diferente de problema y depende del contexto: si quieres dividir dinero en partes iguales sin perder dinero, debes usar una función/método/clase dedicada que lo haga correctamente (ver http: // martinfowler) .com/eaaCatalog/money.html). El artículo referido en Code Project se basa en suposiciones no válidas: no entiende que el decimal se almacena como base 10, prueba que también tiene éxito con decimal, pero supone que fallarán. –

Cuestiones relacionadas