Lompat ke isi

Modul:Height: Perbedaan antara revisi

Dari Wikisporta, ensiklopedia olahraga
←Membuat halaman berisi 'local p = {} -- Fungsi pembantu untuk membulatkan angka local function round(val, decimal) if not val then return nil end local exp = 10 ^ (decimal or 0) return math.floor(val * exp + 0.5) / exp end function p.main(frame) local args = frame:getParent().args -- Mendukung parameter m, cm, ft, in local m = tonumber(args.m or args[1]) local cm = tonumber(args.cm) local ft = tonumber(args.ft) local inches = tonumber(args['in'...'
Tanda: Suntingan perangkat seluler Suntingan peramban seluler
 
k Melindungi "Modul:Height" ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))
Tanda: Suntingan perangkat seluler Suntingan peramban seluler
 
(Tidak ada perbedaan)

Revisi terkini sejak 17 Oktober 2026 21.14

Dokumentasi untuk modul ini dapat dibuat di Modul:Height/doc

local p = {}

-- Fungsi pembantu untuk membulatkan angka
local function round(val, decimal)
    if not val then return nil end
    local exp = 10 ^ (decimal or 0)
    return math.floor(val * exp + 0.5) / exp
end

function p.main(frame)
    local args = frame:getParent().args
    
    -- Mendukung parameter m, cm, ft, in
    local m = tonumber(args.m or args[1])
    local cm = tonumber(args.cm)
    local ft = tonumber(args.ft)
    local inches = tonumber(args['in'] or args.inches)

    -- Skenario 1: Jika input dalam Meter (m)
    if m then
        local cmVal = m * 100
        local totalInches = cmVal / 2.54
        local calcFt = math.floor(totalInches / 12)
        local calcIn = round(totalInches % 12, 0)
        
        if calcIn == 12 then
            calcFt = calcFt + 1
            calcIn = 0
        end
        
        -- Format penulisan meter dengan koma (misal: 1,70 m)
        local mStr = tostring(m):gsub("%.", ",")
        return string.format('%s m <span style="white-space: nowrap;">(%d ft %d in)</span>', mStr, calcFt, calcIn)

    -- Skenario 2: Jika input dalam Centimeter (cm)
    elseif cm then
        local totalInches = cm / 2.54
        local calcFt = math.floor(totalInches / 12)
        local calcIn = round(totalInches % 12, 0)
        
        if calcIn == 12 then
            calcFt = calcFt + 1
            calcIn = 0
        end
        
        return string.format('%d cm <span style="white-space: nowrap;">(%d ft %d in)</span>', cm, calcFt, calcIn)

    -- Skenario 3: Jika input dalam Feet & Inches (ft & in) -> konversi ke Meter
    elseif ft and inches then
        local totalInches = (ft * 12) + inches
        local cmVal = round(totalInches * 2.54, 0)
        local mVal = round(cmVal / 100, 2)
        local mStr = tostring(mVal):gsub("%.", ",")
        
        return string.format('%s m <span style="white-space: nowrap;">(%d ft %d in)</span>', mStr, ft, inches)

    else
        return '<span style="color:red; font-weight:bold;">[Nilai Tinggi Salah]</span>'
    end
end

return p