Format double in decimal notation without trailing zeros after the decimal point

akaDemik via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Mar 30 00:39:56 PDT 2015


Thank you.
Actually, I'm doing this: format("%.4f", 
d).stripRight('0').stripRight('.') (not so elegant, but it works.)
But I thinking that do not know much about the format string.

On Sunday, 29 March 2015 at 03:29:26 UTC, Baz wrote:
> On Friday, 27 March 2015 at 15:02:19 UTC, akaDemik wrote:
>> The task seemed very simple. But I'm stuck.
>> I want to:
>>  1234567890123.0 to "1234567890123"
>>  1.23 to "1.23"
>>  1.234567 to "1.2346".
>> With format string "%.4f" i get "1.2300" for 1.23.
>> With "%g" i get "1.23456789e+12" for "1234567890123.0".
>> I can not believe that it is not implemented. What did I miss?
>
> such a format specifier does not exist.
> [.number] means the minimal digits to display, so there is 
> always at least `number` digits.
>
> In your three examples, there is no common way to format them, 
> you have to write you own helper:
>
> ----
> struct YourExoticFormater
> {
>    private float _value;
>    alias _value this;
>    string toString()
>    {
>       // here you test the number and you choose how to diplay 
> it.
>       // for example if frac() returns 0 you return the string 
> repr
>       // esentation of the the integral part, etc...
>       // this will work with to!string(), probably format %s 
> (?), and the
>       // write() functions family.
>    }
> }
> ----



More information about the Digitalmars-d-learn mailing list