Czy możesz zaproponować najlepszy sposób zdefiniowania rodzaju pieniędzy w F #?Jak definiujesz rodzaj pieniędzy w F #
Odpowiedz
Zawsze, zawsze, używaj System.Decimal do przechowywania danych finansowych! (chyba, że nie dbają o nieścisłości i błędów zaokrągleń!) http://msdn.microsoft.com/en-us/library/364x0z75(VS.71).aspx
użyj długiego i przechowuj w nim grosze (lub dziesiąte centa).
Można użyć klasy takiej jak dziesiętna, ale zwykle kończy się ona being quite slow.
Czy w tym przypadku poprawność nie powinna być ważniejsza od prędkości? –
jak używać typu integer do przechowywania najmniejszej jednostki nie jest dokładna. To nie jest jak używanie podwójnego typu. – gbjbaanb
Niebezpieczny. Poza dużą szansą na błąd, możesz później mieć problemy, gdy ktoś mówi, że stawka podatku wynosi 0,001 USD za sztukę. –
typ pieniądze = int <dollars>
?
Nawet nie próbowałem go zobaczyć ... czy można zdefiniować dowolne jednostki, czy też działa tylko z wyraźnie zdefiniowanymi?
Oczywiście, że prawdopodobnie chcesz
typu pieniądze = int <thousandths_of_currency>
(lub kilkadziesiąt groszy, czy cokolwiek).
Aby być bardziej dokładnym.
edycja:
dziesiętne wziąć typów, dzięki czemu można określić jako pieniądze:
[<Measure>]
type = pounds
type money = decimal<pounds>
które mogłyby zapewnić waluty nie są przekrojami przekształcone przez przypadek, na przykład:
jeśli
balance = decimal<pounds>
i
payment = decimal<dollars>
newbalance = balance + payment
nie zostanie skompilowany, a będziesz musiał konwertować zapłatę decimal<pounds>
Nie otrzymuję Twojej sugestii :(F # pozwala na zdefiniowanie dowolnych jednostek –
aww ... wygląda na to, że jednostki dotyczą tylko elementów pływających ! curses: – Massif
F # pozwala na zdefiniowanie jednostek miary dla typu liczbowego, więc możesz zdefiniować typ length = float
Luca Bolognese suggests jeden definiuje swój własny rodzaj pieniędzy opiera się pływaka:
[<Measure>] type money
let money (f:float) = f * 1.<money>
Podążyłem za łączem i to jest przykład, a nie sugestia. Zależy to od aplikacji, ale uważam, że w przypadku większości aplikacji akceptowaną odpowiedzią jest droga. –
F # teraz ma wbudowane wsparcie dla Miary i jednostki. Według głównego inżyniera tej funkcji, Kennedy ma na celu między innymi aplikacje finansowe.
Spojrzałbym na to przed zdefiniowaniem własnego rodzaju pieniędzy w F #.
Werner
- 1. Hindley Milner Rodzaj Wnioskowanie w F #
- 2. Jak definiujesz pakiet-prywatną * cechę * w Scali?
- 3. Jak definiujesz niestandardowe typy "Error" w Rust?
- 4. reprezentacja pieniędzy w mongoidzie
- 5. Gdzie definiujesz formularze django?
- 6. Jak sformatować ciąg do pieniędzy
- 7. Obiekty rekursywne w F #?
- 8. Sprawdzanie poprawności moich pieniędzy
- 9. Jak używać formatu DecimalFormat do formatowania pieniędzy?
- 10. F # pętli w F #
- 11. Zwrot pieniędzy za aplikację w Androidzie
- 12. TSQL Obsada jako sumę pieniędzy
- 13. Co to jest? rodzaj?
- 14. Jak definiujesz poziom istotności (krytyczny/wysoki/niski itp.) Błędów?
- 15. Rodzaj dekonstrukcji
- 16. Jak wywołać metody z konstruktora w F #
- 17. Rodzaj wywnioskować aby nic w Scala
- 18. Rodzaj sprawdzeniu z RankNTypes w Haskell
- 19. NameValuePair rodzaj
- 20. Rodzaj Podpis
- 21. Jak poznać podstawowy rodzaj wyliczenia w klasie?
- 22. Non Visual Studio F # IDE
- 23. leniwy rodzaj iteratorów w Scali?
- 24. Jak odwrócić matrycę w F #?
- 25. Jak zaokrąglić float w F #?
- 26. Jak wpisać rzut w F #?
- 27. Jak potokować -f w awk
- 28. PHP/MySQL: Najlepsze praktyki operacji/przechowywania pieniędzy?
- 29. Dobry przykład klasy ilości lub pieniędzy
- 30. Wysyłanie pieniędzy z [SomePaymentProcesingCompany] na rachunek bankowy
Sądząc po odpowiedziach, twoje pytanie wymaga wyjaśnienia. Czy mówisz o jednostkach miary (na przykład nie mylących dwóch różnych walut) lub o ułamkach dziesiętnych i problemach z zaokrąglaniem? – Benjol