gpt4 book ai didi

mysql - 可以在声明为 FLOAT 的列中输入的值有哪些限制?

转载 作者:行者123 更新时间:2023-11-29 15:25:21 25 4
gpt4 key购买 nike

我正在构建一个网络应用程序,在其中的某些部分,老师插入了科学实验的预期结果。这些结果必须非常准确,它们可能像这样 0.4933546522886728。经过一段时间的搜索后,FLOAT 似乎是将这些答案存储在数据库中的正确数据类型。众所周知,mysql中的FLOAT列可以这样声明FLOAT(n, d),其中n是数字中的总位数,d是数字的位数小数点后。所以,我不知道老师会输入多少位数。那么,如果我像这样 FLOAT 声明它会发生什么。让我想到这个的是这个quote来自 mysql 文档。

For maximum portability, code requiring storage of approximate numeric data values should use FLOAT or DOUBLE PRECISION with no specification of precision or number of digits.

在此 FLOAT 列中输入的值的最大值和最小值是多少。

我还想到使用VARCHAR并存储老师输入的确切数字,然后根据学生输入的数据库中的数字的性质与正确答案进行比较将被操纵以匹配其他数字。

例如,如果教师输入 1.23451,学生输入 1.4235123,我的代码将使其变为 1.42351

最佳答案

FLOATDECIMAL 末尾的 (n,d) 没有意义。它所做的只是导致额外的舍入。

FLOAT 提供大约 7 位小数位的精度和适度大的指数范围。 0.4933546522886728 将被存储为大约 0.4933546xxxxx,多余的数字是噪音。

该数字可以存储在DOUBLE中,在53位(大约16位)精度后有舍入误差。

很少有科学测量需要比 FLOAT 精度可用的数字更多的数字。

您可以INSERT ... VALUES (0.4933546522886728)并将其放入FLOAT中。它将四舍五入为 24 位有效。同上 4933546522886.728 。或者 0.0000000004933546522886728 。或 4.933546522886728e20 或 4.933546522886728e-20 。

获取给定的任何数字,只需将它们放入 INSERT 中,无需担心精度或缩放比例。

VARCHAR 是获取数字和日期的错误方法,除非您想在将原始输入转换为内部格式之前存储原始输入。

关于mysql - 可以在声明为 FLOAT 的列中输入的值有哪些限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59123572/

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