varchar字段之间的MySQL减法会以非常高的精度返回十进制

b1r0

以下减法查询在小数点后返回太多数字。

mysql> select AA, BB, AA - BB, AA - 23.057,  22.659 - 23.057 from table1 where TID = '1';
+----------+----------+---------------------+---------------------+-----------------+
| AA       | BB       | AA - BB             | AA - 23.057         | 22.659 - 23.057 |
+----------+----------+---------------------+---------------------+-----------------+
| 22.659   | 23.057   | -0.3979999999999997 | -0.3979999999999997 |          -0.398 |
+----------+----------+---------------------+---------------------+-----------------+
1 row in set (0.00 sec)
mysql>

我希望我可以使用一个十进制字段,但是用户希望保持输入时在AA和BB列中插入的精度,这就是为什么将VARCHAR用于这些列的原因。

e.g.:  11.10 - 11.22 = - 0.02
       11.20 - 11.10 = + 0.10
       22.659 - 23.057 = -0.398
       23.659 - 22.559 = 0.100

while  23.659 - 22.559 = 0.1 is wrong

任何帮助将不胜感激。谢谢

戈登·利诺夫(Gordon Linoff)

您可以使用以下format()功能:

select format(col1 - col2, length(substring_index(col1, '.', -1)))

如果您不喜欢大数字的逗号:

select replace(format(col1 - col2, length(substring_index(col1, '.', -1))), ',', '')

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript十进制减法

来自分类Dev

十进制高(ish)精度数学

来自分类Dev

MySql如何将varchar(纬度,经度)转换为十进制字段?

来自分类Dev

十进制或双精度数字之间的转换

来自分类常见问题

Python十进制精度

来自分类Dev

SQLAlchemy十进制精度

来自分类Dev

BIRT 十进制精度

来自分类Dev

大十进制减法导致指数

来自分类Dev

在ORACLE SQL中用十进制减法

来自分类Dev

使用Servicestack ORMLite的MySQL十进制列精度

来自分类Dev

如何在双精度双精度和十进制字符串之间转换?

来自分类Dev

AlamoFire响应JSON十进制精度

来自分类Dev

C ++中的十进制精度错误

来自分类Dev

十进制至半精度浮点

来自分类Dev

如何格式十进制数精度

来自分类Dev

超高精度十进制数

来自分类Dev

AlamoFire响应JSON十进制精度

来自分类Dev

十进制到半精度浮点

来自分类Dev

实体框架 6 十进制精度

来自分类Dev

VarChar转换为十进制

来自分类Dev

SQL:从varchar中提取十进制

来自分类Dev

简单的javascript十进制加法会产生错误的结果

来自分类Dev

MySQL 时间与十进制

来自分类Dev

如何解决十进制和双精度之间的数学错误?

来自分类Dev

大十进制数减法不起作用

来自分类Dev

一起将varchar和十进制字段相乘

来自分类Dev

一起将varchar和十进制字段相乘

来自分类Dev

带有while循环的Python平方根问题,返回低十进制精度

来自分类Dev

使用十进制值格式化精确双精度后不返回