是否有可能蒙上了十进制在MySQL中DOUBLE?(Is it possible to cast a

2019-08-01 04:32发布

我知道所有的数字含义,也就是固有的浮点格式,但对我来说可能的四舍五入问题,我有DECIMALMySQL ,我要转换为DOUBLE直在MySQL查询,而不是往下流。

谁能帮助吗?

Answer 1:

SELECT my_decimal_field + 0E0 FROM my_table



Answer 2:

这似乎无法施展它DOUBLE如果你做计算,例如想这带来的问题ROUND()一个DECIMAL 12,2在第三位。 使用ROUND(foo * bar,2)会忽略额外的数字,如果你foobar都是十进制12,2领域。

这就是说,你可以做这样的事情仍然使其工作:

ROUND(CAST(foo AS DECIMAL(30,15)*CAST(bar AS DECIMAL(30,15)),2)


Answer 3:

由于内置的限制CAST功能在MySQL中,它是唯一可能转换成DECIMALDOUBLE与定义功能,投自己的用户。

示例使用案例:

SELECT castDecimalAsDouble(0.000000000000000000100000000000);

结果: 1e-23

 CREATE DEFINER=`root`@`localhost` FUNCTION `castDecimalAsDouble`( decimalInput DECIMAL(65,30) ) RETURNS double DETERMINISTIC BEGIN DECLARE doubleOutput DOUBLE; SET doubleOutput = decimalInput; RETURN doubleOutput; END 



Answer 4:

DECIMAL 可以节省空间。 例如, DECIMAL(4.2)仅占用2个字节。 FLOAT需要4; DOUBLE需要8。

至于原来的问题,简单地做:

ALTER TABLE t MODIFY COLUMN c DOUBLE ...;

(其中“...”应该包括你已经有其他的东西,比如NOT NULL )。



文章来源: Is it possible to cast a DECIMAL to DOUBLE in MySQL?