모듈:Average

편집
호출
{{#invoke:Average|calculate_average|5|3|4}}
결과
4

local p = {}

-- 별점 개선
function p.calculate_average(frame)
    -- 점수 배열 가져오기
    local args = frame.args
    local scores = {}

    for _, value in ipairs(args) do
        local score = tonumber(value)
        if score then
            if score >= 0 and score <= 5 then
                table.insert(scores, score)
            else
                return "점수는 0에서 5 사이여야 합니다."
            end
        end
    end

    -- 점수가 없으면 에러 메시지 출력
    if #scores == 0 then
        return "점수가 입력되지 않았습니다."
    end

    -- 점수 합산 및 평균 계산
    local sum = 0
    for _, score in ipairs(scores) do
        sum = sum + score
    end
    local average = sum / #scores

    -- 소수점 둘째 자리에서 반올림
    average = math.floor(average * 100 + 0.5) / 100

    -- 불필요한 0 제거 후 반환
    local result = tostring(average)
    if result:find("%.") then
        result = result:gsub("0+$", ""):gsub("%.$", "")
    end
    return result
end

return p