如何在 MySQL 中将 1/3 存储为小数

Posted

技术标签:

【中文标题】如何在 MySQL 中将 1/3 存储为小数【英文标题】:How to store 1/3 as a decimal in MySQL 【发布时间】:2012-02-21 21:29:49 【问题描述】:

我试图弄清楚如何存储 1/3 或任何导致 mysql 中无限重复十进制值的分数。我不能只使用 3.333333,因为它显然不等于 100。我一直在阅读有关 float 数据类型的信息,但我不确定这是否可行。任何帮助将不胜感激。

谢谢

【问题讨论】:

我不认为有默认的方式来存储这样的分数——当然除了纯文本。任何浮点整数永远不会真正加起来 100,不管它有多长,但是一旦你把它拉出来,你总是可以用你的代码四舍五入到最接近的整数。这一切都取决于你如何处理这些分数。 这可能是一个愚蠢的问题,但你想达到什么目的?我的意思是存储所需的精确分数 我正在编写一个计算资产所有权的应用程序。例如,如果资产由 3 个人共享,我想提供按百分比(20%、20%、60%)或分数(1/3、1/3、1/3)潜水的选项。我的表格只接受小数,所以如果我想将资产除以 3 或 6,或者任何不能用小数表示的东西,我不知道如何记录它。 【参考方案1】:

您可以将所有有理数(包括整数)表示为“分子”和“分母”。因此,在您的表格中,您将有一个分子和分母列,并且您的应用程序将具有使用该表格存储数字的逻辑。

您仍然无法使用这种技术精确存储无理数(即,如果您想存储 Pi,则无论如何都需要小数近似值)。

查看这里了解什么是有理数,以便您了解这种技术的局限性。

http://en.wikipedia.org/wiki/Rational_number

【讨论】:

太棒了,104348/33215 请参见此处了解更多近似值以及如何计算它们。 mathworld.wolfram.com/PiApproximations.html【参考方案2】:

将分子和分母存储在不同的列中。真的就是这么简单。当您想要将所有分数相加时,真正的问题会在稍后出现。有些语言有这样做的内置工具,但我认为 MySQL 没有。

【讨论】:

以上是关于如何在 MySQL 中将 1/3 存储为小数的主要内容,如果未能解决你的问题,请参考以下文章

如何在双打中将小数设置为只有 2 位? [复制]

如何在 Excel 中将逗号更改为小数?

mysql那些事小数如何存储

MySQL:在视图中将小数转换为百分比

如何在php中将最小值和最大值设置为小数点后2位[重复]

如何在 MySQL 中将 BLOB 转换为 TEXT?