如何在SQL数据库中存储python float

伯爵

在python3中,我主要使用float或np.float32/64,当涉及到将它存储到数据库中时,即使SQL类型是Numeric/Decimal,我们最终也会得到0.400000000000021或类似的东西而不是0.4
如果这些数据是从另一个应用程序访问的。

在python中只使用decimal.Decimal对我们来说不是一个答案,因为我们大量使用pandas,并且不支持Decimal。
一个解决方案是在插入 SQL 之前将 float 转换为 Decimal(在我们的例子中是 SQL Server,但它是一个细节)。然后从 Decimal 返回到 SELECT 之后的浮动。
你有另一种(更好的)方法来处理这样的问题吗?

阿巴纳特

问题是浮点数的值不是 0.4,因为float32or float64(或 Python native float,通常与 相同float64)中没有 0.4 的值。最接近float640.4 的是 0.400000000000021,这正是您所得到的。

由于这是最接近float0.4 的值,如果您要求 Python 将其转换为字符串(例如,print(f)),它会很友好并为您提供字符串0.4

但是当你把它传递给一个数据库时……嗯,这实际上取决于你使用的是哪个数据库接口库。对于一些,它会调用repr,这会给你'0.4'(至少在 Python 3.x 中),所以你要求数据库存储 string 的浮点值'0.4'但是对于其他人,它会将浮点值直接作为 C 传递double,因此您要求数据库存储浮点值0.400000000000021


那你该怎么办?

  • 您是否想将此数据库与其他代码一起使用,这些代码会将值作为字符串读取,然后将它们转换为类似Decimalorfloat80decimal64其他类型的内容?那么您几乎肯定希望设置一个DECIMAL(12, 6)与您的实际精度相匹配的 SQL 数据类型,并让数据库来处理它。(毕竟,0.4四舍五入到小数点后 6 位和0.400000000000021四舍五入到小数点后6 位之间没有区别。)
  • 您想在数据库本身内部进行数学运算吗?和上面一样。
  • 除此以外?没做什么。

说真的,如果要使用此数据库的其他代码只是将值读取为float64,或者将它们读取为字符串并将它们转换为float64(或float32),那么0.400000000000021无论您做什么,它们最终都会得到结果,所以不要做任何事。

另外,还要考虑这样的:如果之间的差别0.4,并0.400000000000021会作出任何差别的任何代码,那么你的代码已经被使用打破float64,之前,你甚至获取数据库。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django将csv float项目存储在数据库中

来自分类Dev

Django将csv float项目存储在数据库中

来自分类Dev

Decimal、Float、Double 或 Varchar 将价格金额存储在数据库中?

来自分类Dev

如何在Cassandra数据库表中将int列转换为float / double列

来自分类Dev

在MySQL数据库的两列中拆分float值

来自分类Dev

在MySQL数据库的两列中拆分float值

来自分类Dev

在MySQL数据库的两列中拆分float值

来自分类Dev

在数据库中输入Float(输入更多数字)C#Microsoft SQL Server

来自分类Dev

如何在SQL Server数据库中存储图像

来自分类Dev

pyodbc:如何在SQL数据库中存储汉字?

来自分类Dev

将float存储到以前以字符串形式转义的数据库?- 安全的?

来自分类Dev

如何在 Haskell 中对 (float,float) 类型的元素求和?

来自分类Dev

如何将 Float Result 转换为 String 并将其保存到 Firebase 数据库中

来自分类Dev

如何在Microsoft Azure中的Sql数据库中存储数据

来自分类Dev

如何获取Floatbuffer存储的float []?

来自分类Dev

如何获取Floatbuffer存储的float []?

来自分类Dev

如何在vector <vector <float> *> *中写入数据?

来自分类Dev

如何在SQL Server数据库中存储Excel工作表数据

来自分类Dev

如何比较vector <float>和float *

来自分类Dev

Numpy float64与Python float

来自分类Dev

float1 vs CUDA中的float

来自分类Dev

float1 vs CUDA中的float

来自分类Dev

如何在WPF中绑定到float数据类型时禁用float验证程序?

来自分类Dev

如何在PHP中使用存储在数据库中的SQL查询中的变量

来自分类Dev

如何在float32而不是float64上强制python float操作?

来自分类Dev

sql float零填充

来自分类Dev

如何从float [],JSONArray解析中获取数据?

来自分类Dev

如何在SQL数据库的单个字段中存储多个值?

来自分类Dev

如何在同一SQL数据库中存储多个应用程序的用户?

Related 相关文章

  1. 1

    Django将csv float项目存储在数据库中

  2. 2

    Django将csv float项目存储在数据库中

  3. 3

    Decimal、Float、Double 或 Varchar 将价格金额存储在数据库中?

  4. 4

    如何在Cassandra数据库表中将int列转换为float / double列

  5. 5

    在MySQL数据库的两列中拆分float值

  6. 6

    在MySQL数据库的两列中拆分float值

  7. 7

    在MySQL数据库的两列中拆分float值

  8. 8

    在数据库中输入Float(输入更多数字)C#Microsoft SQL Server

  9. 9

    如何在SQL Server数据库中存储图像

  10. 10

    pyodbc:如何在SQL数据库中存储汉字?

  11. 11

    将float存储到以前以字符串形式转义的数据库?- 安全的?

  12. 12

    如何在 Haskell 中对 (float,float) 类型的元素求和?

  13. 13

    如何将 Float Result 转换为 String 并将其保存到 Firebase 数据库中

  14. 14

    如何在Microsoft Azure中的Sql数据库中存储数据

  15. 15

    如何获取Floatbuffer存储的float []?

  16. 16

    如何获取Floatbuffer存储的float []?

  17. 17

    如何在vector <vector <float> *> *中写入数据?

  18. 18

    如何在SQL Server数据库中存储Excel工作表数据

  19. 19

    如何比较vector <float>和float *

  20. 20

    Numpy float64与Python float

  21. 21

    float1 vs CUDA中的float

  22. 22

    float1 vs CUDA中的float

  23. 23

    如何在WPF中绑定到float数据类型时禁用float验证程序?

  24. 24

    如何在PHP中使用存储在数据库中的SQL查询中的变量

  25. 25

    如何在float32而不是float64上强制python float操作?

  26. 26

    sql float零填充

  27. 27

    如何从float [],JSONArray解析中获取数据?

  28. 28

    如何在SQL数据库的单个字段中存储多个值?

  29. 29

    如何在同一SQL数据库中存储多个应用程序的用户?

热门标签

归档