navicat导入MYSQL数据库小数点位数变小

navicat导入MYSQL数据库小数点位数变小,第1张

对于小数位可能很长(比如excel的浮点数)不确定长度的浮点型数字,double类型才是正确的选择。decimal多用于定长小数的情况。首先:要确定你的问题是什么。1、是小数位数后面的0不需要?那double会自动忽略后面所有的0.2、是数据被剪切(小数位数变少)了?那么可以有2个解决方案。A、使用double定义该字段,然后重新导入数据。B、使用decimal,但是小数位的总长度必须大于你需要导入的数据小数点的总长度。且字段总长度必须大于等于“小数点左边的长度+小数点右边的长度”以上所有解决方案都解决不了已经导入的数据的小数值,因为丢失在导入的时候已经发生了。所以要保证正确性,必须重新导入。

一,数值类型保留小数点后两个0

在存入数据时,应客户需求数值类型,比如钱数,分数等等需要精确到小数点后几位。

800存入时显示为800.00

方法:在建表时直接定义此数值的类型为float,double或decimal类型

例如:

1 create tablenum(2 shuzi float(4,2),3 shuzi2 double(4,2),4 shuzi3 decimal(4,2)5 )

类型(a,b):a指定指定小数点左边和右边可以存储的十进制数字的最大个数,

b指定小数点右边可以存储的十进制数字的最大个数,小数位数必须是从 0 到 a之间的值。默认小数位数是 0。

此时在插入数据

1 insert into num values(22,33,44)

那么此时显示的数据就是:

22.00 33.00 44.00

无需手动输入00.

最后说一下

float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位 对最后一位数四舍五入)

double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位 对最后一位数四舍五入 float和double的相乘 *** 作,数字溢出不会报错会有精度的损失)

decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位 当对decimal类型进行 *** 作时,数值会因溢出而报错)

二,在存入数据时存入整数,select 查询时取出带小数.00的数据

同样应客户需求,可能仅仅是因为美观而进行的 *** 作

在定义时定义的就为整形或者其它的数值类型那么在取数据时可以使用round()函数

见表并定义

1 create tablenum(2 shuzi int

3 )

插入数据

insert into num values(22)

取出数据

select round(shuzi,2) fromnum

或truncate(shuzi,2)

此时显示为22.00

1、你可以在创建表的时候限制小数点的位数,如create table xxx(abc decimal(10,2))

其中decimal(10,2),就是指整数10位,保留2位小数

2、你可以查询的时候用round()函数四舍五入保留小数,如select round(abc,2)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7372962.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存