RosettaCodeData/Task/Commatizing-numbers/11l/commatizing-numbers.11l

50 lines
1.9 KiB
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
F commatize(s, period = 3, sep = ,)
V m = re:(\.[0-9]+|[1-9]([0-9]+)?(\.[0-9]+)?).search(s)
I !m
R s
V match = m.group()
V splits = match.split(.)
V ip = splits[0]
I ip.len > period
V inserted = 0
L(i) ((ip.len - 1) % period + 1 .< ip.len).step(period)
ip = ip[0 .< i + inserted]sepip[i + inserted ..]
inserted += sep.len
I splits.len > 1
V dp = splits[1]
I dp.len > period
L(i) ((dp.len - 1) I/ period * period .< period - 1).step(-period)
dp = dp[0 .< i]sepdp[i..]
ip = .dp
R s[0 .< m.start()]ips[m.end()..]
V tests = [123456789.123456789,
.123456789,
57256.1D-4,
pi=3.14159265358979323846264338327950288419716939937510582097494459231,
The author has two Z$100000000000000 Zimbabwe notes (100 trillion).,
-in Aus$+1411.8millions,
===US$0017440 millions=== (in 2000 dollars),
123.e8000 is pretty big.,
The land area of the earth is 57268900(29% of the surface) square miles.,
Ain't no numbers in this here words, nohow, no way, Jose.,
James was never known as 0000000007,
Arthur Eddington wrote: I believe there are ""
15747724136275002577605653961181555468044717914527116709366231425076185631031296""
protons in the universe.,
$-140000±100 millions.,
6/9/1946 was a good year for some.]
print(commatize(tests[0], period' 2, sep' *))
print(commatize(tests[1], period' 3, sep' -))
print(commatize(tests[2], period' 4, sep' __))
print(commatize(tests[3], period' 5, sep' ))
print(commatize(tests[4], sep' .))
L(test) tests[5..]
print(commatize(test))