<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AFormat_price</id>
	<title>Module:Format price - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AFormat_price"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Format_price&amp;action=history"/>
	<updated>2026-08-02T21:36:15Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Format_price&amp;diff=136314&amp;oldid=prev</id>
		<title>imported&gt;MusikBot II: Protected &quot;Module:Format price&quot;: High-risk template or module (more info) ([Edit=Require autoconfirmed or confirmed access] (indefinite))</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Format_price&amp;diff=136314&amp;oldid=prev"/>
		<updated>2021-05-31T17:59:52Z</updated>

		<summary type="html">&lt;p&gt;Protected &amp;quot;&lt;a href=&quot;/research/Module:Format_price&quot; title=&quot;Module:Format price&quot;&gt;Module:Format price&lt;/a&gt;&amp;quot;: &lt;a href=&quot;https://en.wikipedia.org/wiki/High-risk_templates&quot; class=&quot;extiw&quot; title=&quot;wikipedia:High-risk templates&quot;&gt;High-risk template or module&lt;/a&gt; (&lt;a href=&quot;/index.php?title=User:MusikBot_II/TemplateProtector&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:MusikBot II/TemplateProtector (page does not exist)&quot;&gt;more info&lt;/a&gt;) ([Edit=Require autoconfirmed or confirmed access] (indefinite))&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local names = {&lt;br /&gt;
    &amp;quot;million&amp;quot;, &amp;quot;billion&amp;quot;, &amp;quot;trillion&amp;quot;, &amp;quot;quadrillion&amp;quot;,&lt;br /&gt;
    &amp;quot;quintillion&amp;quot;, &amp;quot;sextillion&amp;quot;, &amp;quot;septillion&amp;quot;, &amp;quot;octillion&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- two_decimals: boolean, whether to forbid a 1 d.p. result, so 2 becomes &amp;quot;2&amp;quot;,&lt;br /&gt;
--				 2.1 &amp;quot;2.10&amp;quot;, and 2.123 &amp;quot;2.123&amp;quot;&lt;br /&gt;
function p.decimal(val, length, two_decimals)&lt;br /&gt;
	local precision = math.max(0, math.ceil(length - 1 - math.log10(val)))&lt;br /&gt;
	if two_decimals and precision == 1 then precision = 2 end&lt;br /&gt;
	local result = (&amp;quot;%%.%uf&amp;quot;):format(precision):format(val)&lt;br /&gt;
	if two_decimals then&lt;br /&gt;
		result = result:gsub(&amp;#039;%.0*$&amp;#039;, &amp;#039;&amp;#039;):gsub(&amp;#039;(%.[0-9][0-9][0-9]-)0+$&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		result = result:gsub(&amp;#039;%.?0*$&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	result = mw.text.split(result, &amp;#039;%.&amp;#039;)&lt;br /&gt;
	result[1] = result[1]:reverse():gsub(&amp;#039;[0-9][0-9][0-9]&amp;#039;, &amp;#039;%0,&amp;#039;):reverse():gsub(&amp;#039;^,&amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
	return table.concat(result, &amp;#039;.&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.format(val, precision)&lt;br /&gt;
    local scale = math.floor(math.log10(val) / 3) - 1&lt;br /&gt;
    if scale &amp;gt; 0 then&lt;br /&gt;
        scale = math.min(scale, #names)&lt;br /&gt;
        val = val / math.pow(10, 3 * (1 + scale))&lt;br /&gt;
        return p.decimal(val, 3) .. &amp;#039;\194\160&amp;#039; .. names[scale]&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if precision &amp;lt;= 0 then&lt;br /&gt;
        val = math.floor(val / math.pow(10, -precision) + 0.5)&lt;br /&gt;
        val = val * math.pow(10, -precision)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return p.decimal(val, precision + 1, true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p[&amp;#039;&amp;#039;] = function(frame)&lt;br /&gt;
	local val = tonumber(frame.args[1])&lt;br /&gt;
    if not val or val &amp;lt; 0 then&lt;br /&gt;
        error(&amp;#039;[[Module:Format price|Format price]] error: cannot parse value &amp;quot;&amp;#039; .. (frame.args[1] or &amp;#039;&amp;#039;) .. &amp;#039;&amp;quot;&amp;#039;)&lt;br /&gt;
    end&lt;br /&gt;
    return p.format(val, tonumber(frame.args[2]) or 2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;MusikBot II</name></author>
	</entry>
</feed>