gpt4 book ai didi

mysql - 关闭科学记数法 MySQL

转载 作者:行者123 更新时间:2023-11-29 01:30:03 24 4
gpt4 key购买 nike

当我插入 DOUBLE 时,为什么我在选择该值时看到类似 9.755046187483832e17 的值?我怎样才能检索像 975504618748383289 这样的数字?

最佳答案

您可能正在寻找 FORMATROUND功能:

使用 FORMAT(),根据您的语言环境和您的特定需求,您可能需要替换thousands-separator:

mysql> SELECT FORMAT(9.755046187483832e17,0);
975,504,618,748,383,200

mysql> SELECT REPLACE(FORMAT(9.755046187483832e17,0), ',','');
975504618748383200

另一方面,ROUND() 是一个数字 函数,它只输出数字:

mysql> SELECT ROUND(9.755046187483832e17,0);
975504618748383200

参见 http://sqlfiddle.com/#!2/d41d8/17614玩那个。


编辑:如您所见,最后两位数字四舍五入为 00。那是因为 DOUBLE精度限制。您必须记住,两倍近似值。如果您需要精确的值和/或比 16 位 double 精度可用的数字更多的数字,您可能需要将列的类型更改为 DECIMAL .默认情况下,DECIMAL 具有 10 位精度(10 base 10 位)。您可以明确请求最多 65 位数字。

例如,如果你需要最多 20 位的精度,你可以这样写:

CREATE TABLE tbl (myValue DECIMAL(20), ...

参见 http://dev.mysql.com/doc/refman/5.6/en/fixed-point-types.html

但请注意,事情那么简单。选择小数列可能会默默地将其转换为 double(或 bigint?),从而失去额外的精度。您可能必须显式转换为字符串才能保持完整的精度。这意味着您可能必须在应用程序级别处理它。

create table tbl (dblValue DOUBLE, decValue DECIMAL(20,0));
insert into tbl values (975504618748383289, 975504618748383289);

SELECT dblValue, decValue FROM tbl;
--> DBLVALUE DECVALUE
--> 975504618748383200 975504618748383200

SELECT CAST(dblValue AS CHAR), CAST(decValue AS CHAR) FROM tbl;
--> CAST(DBLVALUE AS CHAR) CAST(DECVALUE AS CHAR)
--> 9.755046187483832e17 975504618748383289

参见 http://sqlfiddle.com/#!2/d5f58/2例如。

关于mysql - 关闭科学记数法 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18036091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com