一尘不染

在MySQL中将浮点数转换为十进制

sql

我不太了解cast功能以及decimal此处。decimal(7,2)实际上是什么意思?The first part and the second part arg of the function.

为什么在这里我需要将cast/convert浮点数转换为小数?

mysql> SELECT productCode, MAX(price), MIN(price),
              CAST(AVG(price) AS DECIMAL(7,2)) AS `Average`,
              CAST(STD(price) AS DECIMAL(7,2)) AS `Std Dev`,
              SUM(quantity)
       FROM products
       GROUP BY productCode;
+-------------+------------+------------+---------+---------+---------------+
| productCode | MAX(price) | MIN(price) | Average | Std Dev | SUM(quantity) |
+-------------+------------+------------+---------+---------+---------------+
| PEC         |       0.49 |       0.48 |    0.49 |    0.01 |         18000 |
| PEN         |       1.25 |       1.23 |    1.24 |    0.01 |         15000 |
+-------------+------------+------------+---------+---------+---------------+

下面是相同的sql小提琴吗?

http://sqlfiddle.com/#!2/1ed51b/1/0

我的问题再次重复:

  1. decimal(7,2)实际上是什么意思?The first part and the second part arg of the function.
  2. 为什么在这里我需要将cast/convert浮点数转换为小数?

阅读 217

收藏
2021-05-30

共1个答案

一尘不染

DECIMAL(7,2)表示具有固定小数点的数字,总共有7位数字,其中2位在小数点右边。(因此,左5个,右2个。)

你并不 需要
,除非你想decimal类型(通常,固定点),而不是FLOAT类型的行为(与数字的小数点右边相对不可预知号码有用的近似值)的行为来投。例如,对于 带有
强制转换的产品代码“ PEC”,您的平均值为33333.65; 没有 演员表,则是33333.653333。

如果您经常使用 所有 数字,则可能应该增加转换中的数字总数。说,像DECIMAL (14,2)

2021-05-30