この計算機でできること
名前に「丸め(rounding)」とありますが、このツールは実際には小数を分数に変換する計算機です。小数を1つ入力すると、その値に最も近い分数へ変換し、さらに約分して最も簡単な形にまとめます。0.625 や 0.4 のような扱いにくい小数を、料理のレシピ・採寸・木工・算数の宿題などですぐ使えるすっきりした分数に変えられる、手早い方法です。
入力するのはこれだけ
- 小数 ― 任意の小数を入力してください(例:0.75、0.333、2.5 など)。数値として読み取れない文字を入力した場合は 0 として扱われます。
計算のしくみ
この計算機は、分母を 1 から 1000 まで順番に試しながら、最も一致する分数を探します。それぞれの分母について 小数 × 分母 を四捨五入して整数(分子の候補)を求め、元の値とのずれ(誤差)を測ります。
$$\text{Fraction} = \frac{n}{d} = \frac{\text{Decimal} \times d}{d}, \quad \text{simplified by } \gcd(n, d)$$
- 誤差が 0.000001 を下回った場合、その分数は完全一致とみなされ、その時点で採用されます。
- そうでない場合は、すべての分母の中で誤差が最も小さい分数が選ばれます。
分子と分母が決まると、ユークリッドの互除法で最大公約数(GCD)を求め、両方をその数で割ります。こうして得られるのが約分後の分数です。また、答えが整数かどうか(分母が 1 かどうか)や、実際に約分が行われたかどうかも判定して表示します。
$$\begin{gathered} \text{Fraction} = \frac{n}{d} = \frac{n / \gcd(n,d)}{\,d / \gcd(n,d)\,} \\[1.5em] \text{where}\quad \left\{ \begin{aligned} d &= \text{denominator}, \; 1 \le d \le 1000 \\ n &= \operatorname{round}\!\left(\text{Decimal} \times d\right) \\ &\quad \text{first } d \text{ with } \left|\text{Decimal} - \tfrac{n}{d}\right| < 10^{-6} \end{aligned} \right. \end{gathered}$$
具体例で確認
0.625 を入力してみましょう。分母を順に試すと、\(0.625 \times 8 = 5\) とちょうど割り切れ、誤差ほぼ 0 で分数 \(5/8\) が得られます。5 と 8 の最大公約数は 1 なので、すでにこれ以上約分できません。結果は 5/8 です。
次に 0.5 を試します。最初に一致するのは \(1/2\) で、最大公約数は 1、答えはすっきりした分数 1/2 になります。0.4 を入力すると、\(4/10\) を約分して \(2/5\) になり(\(2/5 = 0.4\) ちょうど)、答えは 2/5 です。
よくある質問
分母はなぜ 1000 までなのですか? 結果を見やすく、計算を速く保つために、探索する分母の上限を 1000 にしています。0.333 のような割り切れない(循環する)小数の場合は、扱いにくい巨大な分数ではなく、ごく近い \(1/3\) が返されます。
1 より大きい数を入れるとどうなりますか? 問題なく動作します。たとえば 2.5 を入力すると \(5/2\) という仮分数になります。なお、このツールは自動で帯分数(例:2と1/2)には分けません。
結果は必ず約分されていますか? はい。すべての結果は最大公約数で割られるため、つねに最も簡単な形(既約分数)で表示されます。