Menu

小数化分数计算器

把任意小数化成精确的最简分数,包括循环小数。

作者 Nethanel Bar, 联合创始人兼 CEO

最后更新

想不用计算器也能解出这些题?

Coddy 数学课程教的是方法本身:你在交互式白板上完成每一步,哪一步出错都会准确告诉你。

每个小数本来就是一个分数

小数是分数的一种写法。0.375 的意思是一千分之三百七十五,也就是 375/1000,约分后得到 3/8。这就是有限小数的全部方法:把小数部分的数字写在对应的 10 的幂上面,再把分子和分母同时除以它们的最大公因数。

循环小数需要更巧妙的办法,而这正是几乎所有计算器都不会展示给你的部分。0.1666… 没法写成以 10 的幂为分母的分数,因为数字永远不会结束。办法是把这个数复制两份,错开位置,让它们无穷的尾巴对齐,然后相减:两条尾巴恰好相互抵消,剩下的就是一个可以拿来做除法的普通整数。

这里的一切都是精确的。没有任何浮点运算,所以 0.1 就是十分之一,而不是计算机通常所指的 0.1000000000000000055;1/7 这样的分数返回的也是 1/7,而不是一个四舍五入后接近它的数。

需要注意的地方

  • 小数有几位,分母就有几个 0。三位小数表示千分之几,所以约分之前,第一个分数的分母一定是 1000。
  • 约分只需一次除法,不用反复试。把分子和分母同时除以最大公因数一次,就是最简分数了;反复除以 2 也能得到,只是慢一些。
  • 循环小数的分母从来不是 10 的幂,而是一串 9(后面可能还有几个 0):0.(3) 是 3/9,0.(45) 是 45/99,这其实就是错位相减法的另一种形式。
  • 百分数也保持精确。1/6 是 16⅔%,而不是 16.67%。把精确的分数换成四舍五入的百分数,是在倒退。
  • 0.999… 确实等于 1。代入算一下:代数运算得到 9x = 9,所以 x = 1。这不是近似,也不是记号上的把戏。

怎样把小数化成分数

  1. 数一数有几位小数

    把小数点后的数字写成一个整数,放在 1 后面跟同样多个 0 的数上面。0.375 有三位小数,所以先写成 375/1000。

  2. 求最大公因数

    找出能同时整除分子和分母的最大的数。375 和 1000 的最大公因数是 125。

  3. 分子分母同时除以它

    375 ÷ 125 = 3,1000 ÷ 125 = 8,所以 0.375 = 3/8。如果最大公因数是 1,说明这个分数本来就是最简分数。

  4. 循环小数改用错位相减

    乘以 10 的幂,让循环节移到小数点前面,再减去原数(必要时也先移位),无穷的尾巴就会抵消。输入 0.1(6),本页会写出每一行过程。

常见小数对应的分数

这些换算值得背下来。其他的,上面的计算器都能精确算出。

小数分数百分数
0.11/1010%
0.1251/812.5%
0.21/520%
0.251/425%
0.333… (0.(3))1/333⅓%
0.3753/837.5%
0.51/250%
0.6255/862.5%
0.666… (0.(6))2/366⅔%
0.753/475%
0.8757/887.5%
0.1666… (0.1(6))1/616⅔%

例题详解

有限小数:0.375

plain
0.375

三位小数,所以先写成 375/1000。375 和 1000 的最大公因数是 125,同时除以它得到 3/8。只有两行,而第二行是唯一可能出错的地方:最大公因数找错了,就会得到 15/40,结果没错但不是最简分数,通常会被扣分。

纯循环小数:0.(3)

plain
0.(3)

设 x = 0.333…。乘以 10 得到 10x = 3.333…。两条尾巴完全相同,所以用第二个式子减去第一个,恰好剩下 9x = 3,整个过程没有任何近似,于是 x = 3/9 = 1/3。分母里的 9 不是巧合:一位循环节总是得到九分之几。

混循环小数:0.1(6)

plain
0.1(6)

这里 1 不循环而 6 循环,所以需要移位两次。100x = 16.666…,10x = 1.666…,相减得到 90x = 15,所以 x = 15/90 = 1/6。90 是 9(一位循环数字)乘以 10(一位不循环数字),这类分母都是这样来的。

大于 1 的小数:2.5

plain
2.5

方法不变:25/10,约去 5,得到 5/2。因为分子大于分母,这是一个假分数,计算器还会给出带分数 2½。答案该写成哪种形式取决于题目:假分数更方便计算,带分数更容易想象大小。

常见错误

  • 把小数点前的数字也算进去。只有小数位数决定 10 的幂:2.5 只有一位小数,所以是 25/10,不是 25/100。
  • 没有化到最简就停下。375/1000 回答的是另一个问题,大多数评分标准要的是 3/8。
  • 把循环小数写成以 10 的幂为分母的分数。0.(3) 不是 3/10,也不是 33/100,而是 3/9。无穷的数字需要用相减的方法。
  • 先取近似值。把 0.333(三位数字)化成分数得到 333/1000,这不等于 1/3。如果小数是循环的,要用括号或省略号标明。
  • 忘了符号。-0.75 是 -3/4,负号属于整个分数,而不是分别属于分子和分母。
  • 把 0.999… 理解为“接近 1”。它恰好等于 1,上面的代数运算两行就能证明。

小数化分数常见问题

小数怎么化成分数?

把小数点后的数字写在分子上,分母是 1 后面跟上与小数位数一样多的 0,再把分子和分母同时除以它们的最大公因数。0.375 写成 375/1000,同时除以 125 得到 3/8。循环小数需要另一种方法,见下一个问题。

循环小数怎么化成分数?

设它为 x,乘以 10 的幂,让循环节移到小数点左边,再减去原数。无穷的尾巴完全相同,所以恰好抵消,只剩下一个整数。以 0.(3) 为例:10x = 3.333…,减去 x = 0.333…,得到 9x = 3,x = 1/3。在这里输入 0.(3) 或 0.333...,每一行都会写出来。

0.375 化成分数是多少?

3/8。先写成 375/1000,375 和 1000 的最大公因数是 125,约分后剩下 3/8。化成百分数正好是 37.5%。

0.999... 真的等于 1 吗?

是的,完全相等,用同样的方法就能证明。设 x = 0.999…,则 10x = 9.999…,相减得到 9x = 9,所以 x = 1。这不是四舍五入,也不是记号上的怪事:0.999… 和 1 是同一个数的两种写法。

为什么给出的是分数,而不是小数答案?

因为分数才是精确值,你输入的小数只是它的一种写法。题目要求写成最简分数时,写小数会被判错,而本页的意义正是给你题目要求的那种形式。

能处理负数和大于 1 的数吗?

都可以。-0.75 得到 -3/4,2.5 得到 5/2,旁边还会显示带分数 2½。方法完全一样,只是答案的呈现方式不同。

循环小数怎么输入?

有两种方式,都可以用。把循环的数字放在括号里,例如 0.(3)、0.1(6)、0.(142857),这样不会有歧义;或者直接以省略号结尾,例如 0.333...、0.1666...,循环节会根据你给出的数字推算出来。

更多数学工具

Coddy 编程语言插图

和 Coddy 一起学数学

开始