HTMLパーセンテージ計算機の使い方|割合・増減率・比率を即座に算出する無料ツール

Published on: | Last updated:

パーセント計算、意外とよくやるんだよね。割引率とか、達成率とか。そのたびに電卓アプリ探したり、Googleで「〇〇の△%」って検索したり。正直、ちょっと面倒。

特に自分のブログとかサイトで、何かを説明してるとき。「ここで30%オフの計算をしてみましょう」ってなっても、読者を別のサイトに飛ばすのは気が引ける。流れが切れちゃうし。

先說結論

そういう時のために、コピペ一発で自分のサイトに埋め込める、多機能なパーセント計算ツール。HTML、CSS、JavaScriptが全部セットになってるから、これだけで動く。うん、かなり便利だと思う。

古い計算方法と現代のデジタル結果の融合
古い計算方法と現代のデジタル結果の融合

これがコードの全部

とりあえず、コードはこれ。全部。長いけど、これをまるっとコピーすればOK。中身をいじる必要は、基本的にはない。

<div class="percentage-calculator-wrapper">
    <style>
        .percentage-calculator-wrapper { font-family: Arial, sans-serif; margin: 20px auto; max-width: 600px; background-color: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1); }
        .percentage-calculator-header { background-color: #f2f2f2; color: #333; padding: 20px; text-align: center; border-bottom: 1px solid #e0e0e0; }
        .percentage-calculator-header h2 { font-size: 1.5em; margin: 0; }
        .percentage-tab-container { display: flex; flex-wrap: wrap; background-color: #f0f0f0; padding: 10px; }
        .tab-row { display: flex; width: 100%; justify-content: space-around; margin-bottom: 5px; }
        .percentage-tab { flex: 1 1 20%; max-width: 20%; padding: 10px 15px; border: none; background-color: #ddd; color: #555; font-weight: 600; cursor: pointer; transition: background-color 0.3s, color 0.3s, box-shadow 0.3s; border-radius: 5px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); text-align: center; box-sizing: border-box; position: relative; z-index: 1; }
        .percentage-tab.active { color: #007bff; background-color: #fff; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); }
        .percentage-tab:hover { background-color: #ccc; }
        .percentage-tab-content { padding: 20px; display: none; border-top: 1px solid #e0e0e0; }
        .percentage-tab-content#calculate { display: block; }
        .percentage-label { display: block; margin-bottom: 8px; color: #333; font-weight: 500; }
        .percentage-input[type="number"] { width: 100%; padding: 10px; margin-bottom: 15px; border: 1px solid #ccc; border-radius: 4px; box-sizing: border-box; }
        .percentage-button { background-color: #007bff; color: white; padding: 12px 20px; border: none; border-radius: 5px; cursor: pointer; width: 100%; transition: background-color 0.3s; font-size: 1em; }
        .percentage-button:hover { background-color: #0056b3; }
        .percentage-result { margin-top: 20px; font-weight: bold; color: #4CAF50; }
        .percentage-example { font-style: italic; color: #777; margin-top: 5px; }
        .percentage-error { color: #f44336; }
        @media (max-width: 600px) {
            .percentage-tab { font-size: 0.9em; padding: 8px 0; }
            .percentage-calculator-header h2 { font-size: 1.2em; }
        }
    </style>
    <div class="percentage-calculator-header">
        <h2>パーセント計算機</h2>
    </div>
    <div class="percentage-tab-container">
        <div class="tab-row">
            <button class="percentage-tab active" data-tab="calculate">計算</button>
            <button class="percentage-tab" data-tab="add">加算</button>
            <button class="percentage-tab" data-tab="subtract">減算</button>
            <button class="percentage-tab" data-tab="compare">比較</button>
            <button class="percentage-tab" data-tab="ratio">比率</button>
        </div>
        <div class="tab-row">
            <button class="percentage-tab" data-tab="initialIncrease">増加前の値</button>
            <button class="percentage-tab" data-tab="initialDecrease">減少前の値</button>
            <button class="percentage-tab" data-tab="increaseDecrease">増減率</button>
            <button class="percentage-tab" data-tab="percentageIncrease">増加後の値</button>
            <button class="percentage-tab" data-tab="percentageDecrease">減少後の値</button>
        </div>
    </div>
    <div class="percentage-tab-content" id="calculate">
        <label class="percentage-label" for="value1">数値入力:</label>
        <input type="number" class="percentage-input" id="value1">
        <label class="percentage-label" for="percentage1">パーセント入力:</label>
        <input type="number" class="percentage-input" id="percentage1">
        <button class="percentage-button" onclick="calculatePercentage()">計算する</button>
        <p class="percentage-result" id="result1"></p>
        <p class="percentage-example">例: 200 の 25% は 50</p>
    </div>
    <div class="percentage-tab-content" id="add" style="display: none;">
        <label class="percentage-label" for="value2">数値入力:</label>
        <input type="number" class="percentage-input" id="value2">
        <label class="percentage-label" for="percentage2">パーセント入力:</label>
        <input type="number" class="percentage-input" id="percentage2">
        <button class="percentage-button" onclick="addPercentage()">加算する</button>
        <p class="percentage-result" id="result2"></p>
        <p class="percentage-example">例: 100 + 10% は 110</p>
    </div>
    <div class="percentage-tab-content" id="subtract" style="display: none;">
        <label class="percentage-label" for="value4">数値入力:</label>
        <input type="number" class="percentage-input" id="value4">
        <label class="percentage-label" for="percentage4">パーセント入力:</label>
        <input type="number" class="percentage-input" id="percentage4">
        <button class="percentage-button" onclick="subtractPercentage()">減算する</button>
        <p class="percentage-result" id="result4"></p>
        <p class="percentage-example">例: 100 - 10% は 90</p>
    </div>
    <div class="percentage-tab-content" id="compare" style="display: none;">
        <label class="percentage-label" for="value3">比較する値:</label>
        <input type="number" class="percentage-input" id="value3">
        <label class="percentage-label" for="total3">全体の値:</label>
        <input type="number" class="percentage-input" id="total3">
        <button class="percentage-button" onclick="comparePercentage()">比較する</button>
        <p class="percentage-result" id="result3"></p>
        <p class="percentage-example">例: 25 は 100 の 25%</p>
    </div>
    <div class="percentage-tab-content" id="ratio" style="display: none;">
        <label class="percentage-label" for="ratioValue1">元の値:</label>
        <input type="number" class="percentage-input" id="ratioValue1">
        <label class="percentage-label" for="ratioValue2">後の値:</label>
        <input type="number" class="percentage-input" id="ratioValue2">
        <button class="percentage-button" onclick="calculateRatioPercentage()">計算する</button>
        <p class="percentage-result" id="resultRatio"></p>
        <p class="percentage-example">例: 100 が 150 になると 50% 増加</p>
    </div>
    <div class="percentage-tab-content" id="initialIncrease" style="display: none;">
        <label class="percentage-label" for="initialIncreaseFinalValue">増加後の値:</label>
        <input type="number" class="percentage-input" id="initialIncreaseFinalValue">
        <label class="percentage-label" for="initialIncreasePercentage">増加率(%):</label>
        <input type="number" class="percentage-input" id="initialIncreasePercentage">
        <button class="percentage-button" onclick="calculateInitialIncrease()">計算する</button>
        <p class="percentage-result" id="resultInitialIncrease"></p>
        <p class="percentage-example">例: 25% 増加して 100 になった場合、元の値は 80</p>
    </div>
    <div class="percentage-tab-content" id="initialDecrease" style="display: none;">
        <label class="percentage-label" for="initialDecreaseFinalValue">減少後の値:</label>
        <input type="number" class="percentage-input" id="initialDecreaseFinalValue">
        <label class="percentage-label" for="initialDecreasePercentage">減少率(%):</label>
        <input type="number" class="percentage-input" id="initialDecreasePercentage">
        <button class="percentage-button" onclick="calculateInitialDecrease()">計算する</button>
        <p class="percentage-result" id="resultInitialDecrease"></p>
        <p class="percentage-example">例: 25% 減少して 75 になった場合、元の値は 100</p>
    </div>
    <div class="percentage-tab-content" id="increaseDecrease" style="display: none;">
        <label class="percentage-label" for="increaseDecreaseInitialValue">元の値:</label>
        <input type="number" class="percentage-input" id="increaseDecreaseInitialValue">
        <label class="percentage-label" for="increaseDecreaseFinalValue">後の値:</label>
        <input type="number" class="percentage-input" id="increaseDecreaseFinalValue">
        <button class="percentage-button" onclick="calculateIncreaseDecrease()">計算する</button>
        <p class="percentage-result" id="resultIncreaseDecrease"></p>
        <p class="percentage-example">例: 100 が 130 になると 30% の増加</p>
    </div>
    <div class="percentage-tab-content" id="percentageIncrease" style="display: none;">
        <label class="percentage-label" for="percentageIncreaseValue">数値入力:</label>
        <input type="number" class="percentage-input" id="percentageIncreaseValue">
        <label class="percentage-label" for="percentageIncreasePercentage">増加率(%):</label>
        <input type="number" class="percentage-input" id="percentageIncreasePercentage">
        <button class="percentage-button" onclick="calculatePercentageIncrease()">計算する</button>
        <p class="percentage-result" id="resultPercentageIncrease"></p>
        <p class="percentage-example">例: 100 が 25% 増加すると 125</p>
    </div>
    <div class="percentage-tab-content" id="percentageDecrease" style="display: none;">
        <label class="percentage-label" for="percentageDecreaseValue">数値入力:</label>
        <input type="number" class="percentage-input" id="percentageDecreaseValue">
        <label class="percentage-label" for="percentageDecreasePercentage">減少率(%):</label>
        <input type="number" class="percentage-input" id="percentageDecreasePercentage">
        <button class="percentage-button" onclick="calculatePercentageDecrease()">計算する</button>
        <p class="percentage-result" id="resultPercentageDecrease"></p>
        <p class="percentage-example">例: 100 が 25% 減少すると 75</p>
    </div>
    <script>
        const tabs = document.querySelectorAll('.percentage-tab');
        const tabContents = document.querySelectorAll('.percentage-tab-content');
        tabs.forEach(tab => {
            tab.addEventListener('click', () => {
                tabs.forEach(t => t.classList.remove('active'));
                tabContents.forEach(c => c.style.display = 'none');
                tab.classList.add('active');
                const tabId = tab.dataset.tab;
                document.getElementById(tabId).style.display = 'block';
            });
        });
        function getNumber(id) { return parseFloat(document.getElementById(id).value); }
        function setResult(id, text) { document.getElementById(id).textContent = text; }
        function validate(...values) { return values.every(v => !isNaN(v)); }
        function calculatePercentage() {
            const v = getNumber("value1"), p = getNumber("percentage1");
            if (!validate(v, p)) { setResult("result1", "数値を入力してください。"); return; }
            setResult("result1", `${p}% of ${v} is ${(p / 100) * v}`);
        }
        function addPercentage() {
            const v = getNumber("value2"), p = getNumber("percentage2");
            if (!validate(v, p)) { setResult("result2", "数値を入力してください。"); return; }
            setResult("result2", `${v} + ${p}% is ${v * (1 + p / 100)}`);
        }
        function subtractPercentage() {
            const v = getNumber("value4"), p = getNumber("percentage4");
            if (!validate(v, p)) { setResult("result4", "数値を入力してください。"); return; }
            setResult("result4", `${v} - ${p}% is ${v * (1 - p / 100)}`);
        }
        function comparePercentage() {
            const v = getNumber("value3"), t = getNumber("total3");
            if (!validate(v, t) || t === 0) { setResult("result3", "有効な数値を入力してください。"); return; }
            setResult("result3", `${v} is ${((v / t) * 100).toFixed(2)}% of ${t}`);
        }
        function calculateRatioPercentage() {
            const i = getNumber("ratioValue1"), f = getNumber("ratioValue2");
            if (!validate(i, f) || i === 0) { setResult("resultRatio", "有効な数値を入力してください。"); return; }
            const diff = ((f - i) / i) * 100;
            setResult("resultRatio", `From ${i} to ${f} is a ${diff.toFixed(2)}% ${diff >= 0 ? 'increase' : 'decrease'}`);
        }
        function calculateInitialIncrease() {
            const f = getNumber("initialIncreaseFinalValue"), p = getNumber("initialIncreasePercentage");
            if (!validate(f, p) || (1 + p / 100) === 0) { setResult("resultInitialIncrease", "有効な数値を入力してください。"); return; }
            setResult("resultInitialIncrease", `Before growing by ${p}%, the value was ${(f / (1 + p / 100)).toFixed(2)}`);
        }
        function calculateInitialDecrease() {
            const f = getNumber("initialDecreaseFinalValue"), p = getNumber("initialDecreasePercentage");
            if (!validate(f, p) || (1 - p / 100) === 0) { setResult("resultInitialDecrease", "有効な数値を入力してください。"); return; }
            setResult("resultInitialDecrease", `Before decreasing by ${p}%, the value was ${(f / (1 - p / 100)).toFixed(2)}`);
        }
        function calculateIncreaseDecrease() {
            const i = getNumber("increaseDecreaseInitialValue"), f = getNumber("increaseDecreaseFinalValue");
            if (!validate(i, f) || i === 0) { setResult("resultIncreaseDecrease", "有効な数値を入力してください。"); return; }
            const diff = ((f - i) / i) * 100;
            setResult("resultIncreaseDecrease", `From ${i} to ${f} is a ${diff.toFixed(2)}% ${diff >= 0 ? 'increase' : 'decrease'}`);
        }
        function calculatePercentageIncrease() {
            const v = getNumber("percentageIncreaseValue"), p = getNumber("percentageIncreasePercentage");
            if (!validate(v, p)) { setResult("resultPercentageIncrease", "数値を入力してください。"); return; }
            setResult("resultPercentageIncrease", `If ${v} grows by ${p}%, it becomes ${(v * (1 + p / 100)).toFixed(2)}`);
        }
        function calculatePercentageDecrease() {
            const v = getNumber("percentageDecreaseValue"), p = getNumber("percentageDecreasePercentage");
            if (!validate(v, p)) { setResult("resultPercentageDecrease", "数値を入力してください。"); return; }
            setResult("resultPercentageDecrease", `If ${v} decreases by ${p}%, it becomes ${(v * (1 - p / 100)).toFixed(2)}`);
        }
    </script>
</div>

実装指引

使い方は大きく分けて2つ。

  1. 単体ファイルとして使う場合:
    メモ帳とかのテキストエディタに上のコードを全部コピペして、「calculator.html」みたいな感じでファイル名を「.html」で終わるようにして保存。そのファイルをダブルクリックすればブラウザで開けて、もう使える。一番手軽。
  2. WordPressに埋め込む場合
    投稿画面で「カスタムHTML」ブロックを追加して、その中にコードを全部コピペするだけ。プレビューすればちゃんと表示されてるはず。簡単だよね。
コードをページに埋め込むイメージ
コードをページに埋め込むイメージ

これ、いつ使うのがいいの?

でも、casioのkeisanみたいな専門サイトを使えばいいじゃん?って思うかもしれない。うん、それもそう。だから、どっちがいいか、ちょっと考えてみた。

項目 このコードを使う 外部の計算サイト(例:casio)
用途 自分のブログ記事の流れを止めずに、読者に計算させたい時。例えば金融や不動産系の記事とか。 一回だけ、さっと計算したい時。ブックマークしとけばいいし。
カスタマイズ性 まあまあ。CSSがわかる人なら、色とかデザインを自分のサイトに合わせられる。 ゼロ。当たり前だけど、提供されてるものをそのまま使うしかない。
依存性・速度 外部サイトに依存しない。自分のサイトが表示されれば、すぐ使える。オフラインでも動くし。 相手のサイトが落ちてたら使えない。広告が多いと重いことも。
手間 コピペだけ。でも、自分のサイトのCSSと干渉したら、ちょっと直すのが面倒かも。 リンクを貼るだけ。楽。でも読者はページを離れることになる。

要するに、自分のコンテンツの一部として計算機能を提供したいなら、このコードはかなり良い選択肢だと思う。ただ計算したいだけなら、専用サイトの方が早い。

で、何ができるの?

このツール、タブがいっぱいあって、思ったより多機能。メモがてら書き出してみる。

  • 「XはYの何%?」みたいな基本的な計算。
  • ある数値にパーセントを足したり、引いたり。
  • 2つの数値を比較して、片方がもう片方の何パーセントか。
  • 増加率・減少率の計算。「売上が100万から120万になった。何%増?」みたいなやつ。これが一番使うかも。
  • 「20%増えた結果120になった。元の数値は?」みたいな、逆算もできる。地味に便利。

そういえば、日本の政府統計データが見れる「e-Stat」とか見てると、もうパーセントのオンパレードだよね。前年比、構成比、増減率…。ああいうデータを解説するブログ記事とか書くなら、こういう計算ツールを横に置いておくと、読者はすごく助かるだろうな、って思った。

パーセント増加を視覚的に表現
パーセント増加を視覚的に表現

いくつか注意点

一応、気をつけるべきことをいくつか。

まず、セキュリティ。このコードは、入力された数値をどこかのサーバーに送ったりはしない。全部ブラウザの中だけで計算が終わる(クライアントサイドってやつ)。だから、入力した数値が漏れる心配は基本ない。でも、まあ、ものすごく機密性の高い計算に使うのは避けた方が無難。

あと、デザインの崩れ。自分のサイトにもともとあるCSSと、このコード内のCSSがケンカして、表示が崩れる可能性はゼロじゃない。もしそうなったら、CSSをちょっと調整する必要があるかも。そこだけ、少し注意が必要。

最後に

結局は、ただの道具。でも、こういうちょっとした道具が、作業をすごく楽にしてくれることもある。もし何かの記事でパーセント計算が必要になったら、使ってみるといいかもしれない。

ふと思ったけど、あなたが一番よくやる計算って何です? 消費税の計算? それとも、仕事の進捗率? 人によって全然違いそうで、ちょっと興味ある。

Related to this topic:

Comments

  1. Guest 2025-11-23 Reply
    最近うちの子どもの算数の宿題、やたら「割合」「比率」ばっか出てくる。え、また?ってくらい。で、自分もパッと計算できるタイプじゃないし…絶対他にも困ってる親いると思うんだけど、正直どうしてるんだろう。ぱーっと答えが出せるツールとか、超欲しいなって毎回思っちゃう。お菓子を何人かで分けたり、一人分いくら?とか増減どれくらい?みたいなの、数字苦手な自分には地味にきついし。「一緒に調べながら」って言われても結局スマホ頼みだしなあ。でも家で教えるとなったらサクッと簡単に説明したいやん?何か使いやすいツールとかアプリ知ってたら本気で誰か教えてほしい…。ていうか他の親たち、本当どうしてんのかな~気になる。
  2. Guest 2025-09-01 Reply
    へえ〜、パーセンテージ計算機って超便利だね!海外のプロジェクトでよく使ってるけど、こんなツール本当に助かるよ。WordPress組み込みとかマジ感動的〜。計算の悩みがぐっと楽になるよ!
  3. Guest 2025-06-05 Reply
    実務者の立場から言うと、パーセンテージ計算機って本当に便利だよね。特にWebデザインや経理の現場では、こういうツールがあると作業効率めっちゃ上がるんだよ。数字の計算、一瞬でできちゃうし、正確さも抜群だから助かるわ。
  4. Guest 2025-05-13 Reply
    このパーセンテージ計算機、すごく便利そうですね!特に実際のシナリオでの計算例があれば、もっと理解しやすくなりそう。学生としては、日常生活でも役立ちそうなので、ぜひ試してみたいです!
  5. Guest 2025-04-16 Reply
    これは興味深いですね!特にWordPressへの追加方法について、もう少し具体的な手順があれば嬉しいです。実際のシナリオでの例ももう少し詳しく知りたいです。どんなケースがありますか?
  6. Guest 2025-04-13 Reply
    「このパーセンテージ計算ツール、確かに便利そうだけど...グローバルな視点で見た時、通貨単位や小数点表記の文化差に対応してるのかな?例えば欧州だとカンマとピリオドの使い方逆だし、日本円とUSドルだと計算結果の見え方も変わるよね。ちょっと気になったから、作者さんどう思う?」