gpt4 book ai didi

mysql - 何时使用 float 与十进制数

转载 作者:行者123 更新时间:2023-12-04 11:11:47 24 4
gpt4 key购买 nike

我正在构建这个 API,数据库将存储代表以下之一的值:

  • 百分比
  • 平均

  • 老实说,我不知道如何表示范围在 0 到 100% 之间的数字。应该是
  • 0.00 - 1.00
  • 0.00 - 100.00
  • 我不知道的任何其他选择

  • 对此有明确的选择吗?在数据库上表示从 0 到 100% 百分比的全局方式?更进一步,它的正确类型是什么,浮点数还是十进制数?

    谢谢你。

    最佳答案

    我会采取相反的立场。
    FLOAT用于近似数字,例如百分比、平均值等。您应该在显示值时进行格式化,无论是在应用程序代码中还是使用 FORMAT() MySQL的功能。

    永远不要测试 float_value = 1.3 ;失败的原因有很多。
    DECIMAL应该用于货币值(value)。 DECIMAL当值需要四舍五入为美元/美分/欧元/等时,避免第二次四舍五入。会计师不喜欢零头。

    MySQL对DECIMAL的实现允许 65 位有效数字; FLOAT给出大约 7 和 DOUBLE大约 16. 7 对于传感器和科学计算通常绰绰有余。

    至于“百分比”——有时我用过TINYINT UNSIGNED当我只想消耗 1 个字节的存储空间并且不需要太多精度时;有时我用过 FLOAT (4字节)。没有专门针对百分比调整的数据类型。 (还要注意, DECIMAL(2,0) 不能保存值 100 ,所以从技术上讲,您需要 DECIMAL(3,0) 。)

    或者有时我用过 FLOAT持有一个介于 0 和 1 之间的值。但是我需要确保在显示“百分比”之前乘以 100。

    更多

    “百分比、平均、比率”这三个都闻起来像漂浮物,所以这将是我的第一选择。

    决定数据类型的一个标准...将存在多少个值副本?

    如果您有一个十亿行的表,其中有一列表示百分比,请考虑 TINYINT将占用 1 个字节(总共 1GB),但是 FLOAT将需要 4 个字节(总共 4GB)。 OTOH,大多数应用程序没有那么多行,所以这可能不相关。

    作为“一般”规则,“精确”值应该使用某种形式的 INTDECIMAL .不精确的东西(科学计算、平方根、除法等)应该使用 FLOAT (或 DOUBLE)。

    此外,输出的格式化通常应该留给应用程序前端。也就是说,即使“平均值”可能计算为“14.6666666...”,但显示应该显示类似“14.7”的内容;这对人类更友好。同时,您具有稍后决定“15”或“14.667”是更可取的输出格式的基础值。

    范围 "0.00 - 100.00"可以通过 FLOAT 完成并使用输出格式或使用 DECIMAL(5,2) (3 个字节)预先确定您将始终需要指定的精度。

    关于mysql - 何时使用 float 与十进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59850951/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com