October 29, 2012
Speaking on behalf of Dejan, he expressed a wish to have such a type in D. (eg: such that assert(3.6 * 10 == 36.0) - which may not always be true on all architectures).


As maybe a new backend type is out of the question.  Perhaps we should create a new library type for the job - eg: _Decimal32, _Decimal64, _Decimal128.

Thoughts?


Regards
Iain.
October 29, 2012
On Mon, Oct 29, 2012 at 07:43:35PM +0100, Iain Buclaw wrote:
> Speaking on behalf of Dejan, he expressed a wish to have such a type
> in D. (eg: such that assert(3.6 * 10 == 36.0) - which may not always
> be true on all architectures).
> 
> As maybe a new backend type is out of the question.  Perhaps we should create a new library type for the job - eg: _Decimal32, _Decimal64, _Decimal128.
[...]

Implementing it in the library makes sense.


T

-- 
There's light at the end of the tunnel. It's the oncoming train.
October 29, 2012
10/29/2012 6:43 PM, Iain Buclaw пишет:
> Speaking on behalf of Dejan, he expressed a wish to have such a type in
> D. (eg: such that assert(3.6 * 10 == 36.0) - which may not always be
> true on all architectures).
>
>
> As maybe a new backend type is out of the question.  Perhaps we should
> create a new library type for the job - eg: _Decimal32, _Decimal64,
> _Decimal128.
>
> Thoughts?

I recall there was proposal for Phobos with both fixed decimal floating point types and arbitrary precision variants.

And taking the role of good jinn:
https://github.com/andersonpd/decimal/tree/master/decimal

(seems very much alive and kicking)

>
> Regards
> Iain.


-- 
Dmitry Olshansky
October 29, 2012
On 29 October 2012 23:30, Dmitry Olshansky <dmitry.olsh@gmail.com> wrote:
> 10/29/2012 6:43 PM, Iain Buclaw пишет:
>
>> Speaking on behalf of Dejan, he expressed a wish to have such a type in
>> D. (eg: such that assert(3.6 * 10 == 36.0) - which may not always be
>> true on all architectures).
>>
>>
>> As maybe a new backend type is out of the question.  Perhaps we should create a new library type for the job - eg: _Decimal32, _Decimal64, _Decimal128.
>>
>> Thoughts?
>
>
> I recall there was proposal for Phobos with both fixed decimal floating point types and arbitrary precision variants.
>
> And taking the role of good jinn: https://github.com/andersonpd/decimal/tree/master/decimal
>
> (seems very much alive and kicking)
>
>>
>> Regards
>> Iain.
>
>
>
> --
> Dmitry Olshansky

Looks like just the ticket - however on a brief overview is still very incomplete.


Regards,
-- 
Iain Buclaw

*(p < e ? p++ : p) = (c & 0x0f) + '0';
October 29, 2012
On Monday, 29 October 2012 at 18:43:36 UTC, Iain Buclaw wrote:
> Speaking on behalf of Dejan, he expressed a wish to have such a type in D. (eg: such that assert(3.6 * 10 == 36.0) - which may not always be true on all architectures).
>
>
> As maybe a new backend type is out of the question.  Perhaps we should create a new library type for the job - eg: _Decimal32, _Decimal64, _Decimal128.
>
> Thoughts?
>
>
> Regards
> Iain.

I would definitely want these. They are necessary for doing math on currency values.

--rt
October 29, 2012
On Mon, Oct 29, 2012 at 11:41:45PM +0100, Rob T wrote:
> On Monday, 29 October 2012 at 18:43:36 UTC, Iain Buclaw wrote:
> >Speaking on behalf of Dejan, he expressed a wish to have such a
> >type in D. (eg: such that assert(3.6 * 10 == 36.0) - which may not
> >always be true on all architectures).
> >
> >
> >As maybe a new backend type is out of the question.  Perhaps we should create a new library type for the job - eg: _Decimal32, _Decimal64, _Decimal128.
> >
> >Thoughts?
> >
> >
> >Regards
> >Iain.
> 
> I would definitely want these. They are necessary for doing math on currency values.
[...]

I thought it was better to use fixed-point with currency? Or at least, so I've heard.


T

-- 
Mediocrity has been pushed to extremes.
October 29, 2012
On Oct 29, 2012, at 3:51 PM, "H. S. Teoh" <hsteoh@quickfur.ath.cx> wrote:

> On Mon, Oct 29, 2012 at 11:41:45PM +0100, Rob T wrote:
>> On Monday, 29 October 2012 at 18:43:36 UTC, Iain Buclaw wrote:
>>> Speaking on behalf of Dejan, he expressed a wish to have such a
>>> type in D. (eg: such that assert(3.6 * 10 == 36.0) - which may not
>>> always be true on all architectures).
>>> 
>>> 
>>> As maybe a new backend type is out of the question.  Perhaps we should create a new library type for the job - eg: _Decimal32, _Decimal64, _Decimal128.
>>> 
>>> Thoughts?
>>> 
>>> 
>>> Regards
>>> Iain.
>> 
>> I would definitely want these. They are necessary for doing math on currency values.
> [...]
> 
> I thought it was better to use fixed-point with currency?

With currency, as in most other instances, you usually want to do your rounding once at the end of the calculation, or at least control exactly where and how the rounding is done.  Rounding implicitly on each step means money effectively vanishing into the ether, and people tend not to like that.
October 30, 2012
On Monday, 29 October 2012 at 22:49:16 UTC, H. S. Teoh wrote:
> I thought it was better to use fixed-point with currency? Or at least, so I've heard.

 Depends on the application. Years ago (10?) I made a little interest calculating C program, floating point and rounding gave me so many issues with 1-2 pennies off that I went with an int and just took the bottom 2 digits as pennies. Worked far better than fighting with the floating point issues.

 I do remember somewhere that the double could be used to accurately calculate money up to 18 digits, but I can't remember if there was a specific mode you had to tell the FPU.
October 30, 2012
On Monday, 29 October 2012 at 22:49:16 UTC, H. S. Teoh wrote:
> [...]
>
> I thought it was better to use fixed-point with currency? Or at least,
> so I've heard.
>
>
> T

In most countries, if you are a bank, doing otherwise would actually be *illegal* ...
Top | Discussion index | About this forum | D home