Как вы определяете тип денег в F # - PullRequest
5 голосов
/ 21 мая 2009

Можете ли вы предложить лучший способ определения типа денег в F #?

Ответы [ 5 ]

11 голосов
/ 21 мая 2009

Всегда, всегда, используйте System.Decimal для хранения финансовых данных! (Если вы не заботитесь о неточностях и ошибках округления!) http://msdn.microsoft.com/en-us/library/364x0z75(VS.71).aspx

4 голосов
/ 21 мая 2009

тип money = int <dollars>?

Даже не пытался его увидеть ... вы можете определить произвольные единицы или он работает только с явно определенными?

Очевидно, вы, вероятно, захотите

тип money = int <thousandths_of_currency> (или десятки копеек, или что угодно).

Чтобы быть более точным.

изм:

Десятичные дроби принимают типы, поэтому вы можете определить деньги как:

[<Measure>]

type = pounds

type money = decimal<pounds>

, который может обеспечить случайную кросс-конвертацию валют, например:

если

balance = decimal<pounds>

и

payment = decimal<dollars>

newbalance = balance + payment

не скомпилируется, и вам придется конвертировать платеж в decimal<pounds>

2 голосов
/ 07 июля 2009

Лука Болоньезе предлагает каждый определяет свой собственный тип денег, основанный на потоке:

[<Measure>] type money
let money (f:float) = f * 1.<money>
1 голос
/ 30 октября 2009

F # теперь имеет встроенную поддержку Показатели и единицы измерения . По словам ведущего инженера для этой функции, Кеннеди нацелен на финансовые приложения среди других решений.

Итак, я бы посмотрел на это, прежде чем определять свой собственный тип денег в F #.

Вернер

0 голосов
/ 21 мая 2009

используйте длинную и храните в ней копейки (или десятые доли копейки).

Вы можете использовать класс, такой как Decimal, но обычно он заканчивается довольно медленно .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...