PenggunaanPenggunaan
{{#invoke:Pop density|density}}
Kategori pelacakanKategori pelacakan
Lihat jugaLihat juga
Dokumentasi di atas ditransklusikan dari Modul:Pop density/doc. (sunting | riwayat)
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
-- -- This module implements {{Pop density}} -- localp={} localmath_module=require("Module:Math") localprecision=math_module._precision localfunctionrnd(num,digits) -- This function implements {{rnd}} returnmath_module._precision_format(tostring(num),tostring(digits)) end localunitnames={ ["km²"]="km2", ["sqkm"]="km2", ["km2"]="km2", ["mi2"]="sqmi", ["sqmi"]="sqmi", ["acres"]="acre", ["acre"]="acre", ["ha"]="ha", ["dunam"]="dunam", ["m²"]="m2", ["sqm"]="m2", ["m2"]="m2" } localunitmult={ ["km2"]=1000000, ["sqmi"]=2589988.110336, ["acre"]=4046.8564224, ["ha"]=10000, ["dunam"]=1000, ["m2"]=1 } localunitstr={ ["km2"]='km<sup>2</sup>', ["sqmi"]='sq mi', ["acre"]='acre', ["ha"]='ha', ["dunam"]='dunam', ["m2"]='m<sup>2</sup>' } localfunctionpopdensity(pop,area1,areaunit1,areaunit2,prec,disp,flip) localdens1,prec1=nil,nil localdens2,prec2=nil,nil localstr1,str2='','' localuniterror='<sup>[[Template:Pop density|?Unknown unit?]]</sup>[[Kategori:Pop density menggunakan unit yang tak didukung]]' if(pop~=''andarea1~='')then -- pop and area are defined localpopnum=tonumber(pop) ifnotpopnumthen error(string.format('Tidak dapat mengkonversi populasi "%s" menjadi bilangan',pop),2) end localarea1num=tonumber(area1) ifnotarea1numthen error(string.format('Unable to convert area "%s" to a number',area1),2) end localdens1num=popnum/area1num localunit1=unitnames[areaunit1]ornil localunit2=unitnames[areaunit2]ornil prec1=(prec~='')andtonumber(prec)or(1+math.log10(2*area1/(1/10^precision(pop)+pop/area1/10^precision(area1)))) dens1=rnd(dens1num,math.floor(prec1+0.5)) if(unit1)then str1='/'..unitstr[unit1] if(unit2)then -- convert localmult=unitmult[unit2]/unitmult[unit1] prec2=prec1-math.log10(mult) dens2=rnd(dens1num*mult,math.floor(prec2+0.5)) str2='/'..unitstr[unit2] elseif(areaunit2~='')then if(disp~='num')then dens2='?' else dens2='?'..uniterror end str2='/'..areaunit2..uniterror end elseif(areaunit1~='')then if(disp~='num')then dens2='?' else dens2='?'..uniterror end if(unit2)then str2='/'..unitstr[unit2] elseif(areaunit2~='')then str2='/'..areaunit2..uniterror end str1='/'..areaunit1..uniterror end -- form output if(str2~='')then -- has a converted unit if(disp~='num'anddisp~='table')then -- display input and output density numbers with units if(flip=='on')then returndens2..str2..' ('..dens1..str1..')' else returndens1..str1..' ('..dens2..str2..')' end elseif(disp=='table')then returnpop..'||'..area1..'||'..dens1..'||'..dens2 else -- display output density number without unit returndens2 end else -- no converted unit if(disp~='num'anddisp~='table')then -- display input density number with unit returndens1..str1 elseif(disp=='table')then returnpop..'||'..area1..'||'..dens1 else -- display input density number without unit returndens1 end end end return'' end functionp.density(frame) localargs=(frame.args[3]~=nil)andframe.argsorframe:getParent().args returnpopdensity(args[1]or'',args[2]or'',args[3]or'',args[4]or'',args['prec']or'',args['disp']or'',args['flip']or'') end returnp