【发布时间】:2018-09-29 10:47:19
【问题描述】:
我有一个文件包含一些浮点数。它们是由 python 的 process_time() 函数产生的。这是我要存储在字段中的值的一个示例,
0.0034867459908127785
我需要按原样存储号码。然后我想查询该列的MAX。当我将值存储在FLOAT() 类型的列中时,它会四舍五入为:0.00348675。然后当我查询 MAX 时,我得到:0.0034867459908127785
这在我的情况下是不可接受的。我不希望对数字进行任何更改。
如何按原样存储这些大型浮点数?然后查询 MAX 并获取存储的确切数字?我不希望 MYSQL 舍入任何东西。我需要完整的数字。
【问题讨论】:
-
你用的是哪个mysql版本?
-
从您写的内容来看,该值似乎显示为“0.00348675”,但正在存储完整值。这是因为,如果存储的值为 0.00348675,则查询最大值将返回 0.00348675。如果该值不在存储值中,则它无法返回 0.0034867459908127785。很可能,当您显示存储值时,无论使用何种格式显示它都只显示“0.00348675”,即使存储值是 0.0034867459908127785(或接近它的值)。如果不是这种情况,您将必须更具体地说明如何获得这些结果。
-
看看具有足够精度和规模的 MySQL DECIMAL 数据类型。
-
@Eric Postpischil 我将字段类型从
FLOAT更改为DECIMAL(65,30)。通过在右侧添加零,它似乎存储的时间比需要的长。所以我的号码变成:0.003486745990812778500000000000。最大值也返回这个数字。我似乎在做正确的事吗?如果是这样,我会将其发布为答案。 -
@Suresh 我正在使用版本
5.7.23-0ubuntu0.18.04.1
标签: mysql database floating-point numbers decimal