Jump to content

Formatted numeric output: Difference between revisions

(Add min)
Line 1,224:
=={{header|Lambdatalk}}==
<lang scheme>
{def paddfmt
{def padd {lambda {:zn :x} {if {< :n 1} then else :x{padd {- :n 1} :x}}}}
{def trunc {lambda {:n} {if {> :n 0} then {floor :n} else {ceil :n}}}}
{if {= :z 0}
{lambda {:fa :xb :n}
then else :x{padd {- :z 1} :x}}}}
{let { {:fa :fa} {:xb :xb} {:n {paddabs :fn}} {:x}sign {if {>= :n 0} then + else -}}
-> padd
{:trunc {trunc :n}}
{:dec {abs {trunc {* 1.0e:b {- :n {trunc :n}}}}}}
} {br}{W.slicepadd {- {W.length :n} :f} {-a {W.length :n} 0}{trunc :n}}} >}
{if {W.equal? :sign -}
then else :xsign}:trunc.:dec{padd {- :zb 1}{W.length :xdec}} 0} }}}
-> paddfmt
 
{def formatnumbers
7.125
{lambda {:f :x :n}
10.7
{let { {:f :f} {:x :x} {:n {padd :f :x}:n} }
0.980
{br}{W.slice {- {W.length :n} :f} {- {W.length :n} 0} :n}}}}
-1000
-> format
559.8
 
-69.99
{def numbers 0.000123456789
4970.430} 0.123456789
1.23456789
123.456789
123456789}
-> numbers
 
{S.map {formatfmt 1510 _3} {numbers}}
->
>>>>>>>>> +7.125
_0.000123456789
>>>>>>>> +10.699
____0.123456789
>>>>>>>>> +0.980
_____1.23456789
>>>>>> -1000.000
_____123.456789
>>>>>>> +559.799
______123456789
>>>>>>>> -69.989
>>>>>> +4970.430
</lang>
 
Cookies help us deliver our services. By using our services, you agree to our use of cookies.