¿Puede sugerir la mejor manera de definir el tipo de dinero en F #?¿Cómo se define el tipo de dinero en F #
Respuesta
¡Siempre, siempre, use System.Decimal para almacenar datos financieros! (A menos que no se preocupan por la inexactitud y errores de redondeo!) http://msdn.microsoft.com/en-us/library/364x0z75(VS.71).aspx
usa un largo y almacena centavos (o décimas de un centavo) en él.
Puede usar una clase como Decimal, pero eso generalmente termina en being quite slow.
¿No debería la corrección ser más importante que la velocidad en este caso? –
cómo está utilizando un tipo de enteros para almacenar la unidad más pequeña no precisa. No es como usar un tipo doble. – gbjbaanb
Peligroso. Además de la alta probabilidad de error, más adelante puede tener problemas cuando alguien dice que la tasa de impuestos es de $ 0.001 por unidad. –
tipo de dinero = int <dollars>
?
Ni siquiera lo he intentado ver ... ¿puede definir unidades arbitrarias, o solo funciona con las definidas explícitamente?
Es obvio que probablemente querrá
tipo de dinero = int <thousandths_of_currency>
(o decenas de monedas de un centavo, o lo que sea).
Para ser más precisos.
Editado:
decimales toman tipos por lo que puede definir el dinero como:
[<Measure>]
type = pounds
type money = decimal<pounds>
que pueda garantizar monedas no están cruz convertidos por accidente, por ejemplo:
si
balance = decimal<pounds>
y
payment = decimal<dollars>
newbalance = balance + payment
no se compilará, y usted tiene que convertir el pago a decimal<pounds>
No entiendo lo que sugiere :(F # permite definir unidades arbitrarias. –
aww ... parece que las unidades solo se aplican a carrozas ! curses. – Massif
F # le permite definir unidades de medida para un tipo de número. Por lo tanto, puede definir un tipo length = float
Luca Bolognese suggests uno define su propio tipo de dinero con sede fuera de flotación:
[<Measure>] type money
let money (f:float) = f * 1.<money>
Seguí el enlace, y eso es un ejemplo, no una sugerencia. Depende de la aplicación, pero creo que para la gran mayoría de las aplicaciones, la respuesta aceptada es el camino a seguir. –
F # ahora se ha construido en apoyo a Medidas y unidades. De acuerdo con el ingeniero principal de esta función, Kennedy está dirigido a financieras aplicaciones, entre otras soluciones.
Así lo vería antes de definir mi propio tipo de dinero en F #.
Werner
- 1. ¿Cómo se define el operador explícito en F #?
- 2. ¿Cómo se define la constante de miembro de tipo en F #?
- 3. ¿Cómo se define una extensión de tipo para T [] en F #?
- 4. ¿Cómo se define un tipo para una función en Scala?
- 5. En Cocoa, ¿cómo se define el tipo de id?
- 6. ¿Cómo se define el tipo de escala para ninguna función de argumento?
- 7. ¿Cómo se define un tipo de interfaz de iterador?
- 8. Determinar dónde se define un tipo
- 9. ¿Cómo se define una definición de tipo cíclico?
- 10. Haskell a F # - declare un tipo recursivo en f #
- 11. ¿Cómo se define (?) Internamente?
- 12. #define f (g, g2) g ## g2
- 13. ¿Cómo se resuelven los errores de referencia tipo F #?
- 14. ¿Cómo funciona el tipo de opción en F #
- 15. Cómo obtener el tipo de módulo en F #
- 16. ¿Cómo se define threadsafe?
- 17. ¿Cómo se usa #define?
- 18. ¿Cómo se escribe el molde en F #?
- 19. ¿Alguien sabe de un tipo de dinero en .NET?
- 20. ¿Cómo se define parcelable del tipo de interfaz en el archivo .aidl?
- 21. ¿Qué tipo de datos XML debo usar para moneda/dinero?
- 22. ¿Cómo se define la constante en el constructor de clase?
- 23. El tipo 'System.IDisposable' se define en un ensamblaje al que no se hace referencia
- 24. CS0012: el tipo 'System.Data.Linq.DataContext' se define en una asamblea que no se hace referencia
- 25. Usar tipo de dinero en el modelo de Entity Framework primero
- 26. ¿Cómo se define correctamente PRINT_NOTIFY_INFO_DATA?
- 27. ¿Cómo se define el límite de tipo genérico para los tipos primitivos?
- 28. F # opción de tipo en C#
- 29. ¿Cómo representar el dinero en Objective-C/iOS?
- 30. ¿Cómo se define un pedido en Scala?
A juzgar por las respuestas, su pregunta necesita aclaración. ¿Estás hablando de unidades de medida (por ejemplo, para no confundir dos monedas diferentes) o de decimales y problemas de redondeo? – Benjol