SQL用sum结果有误
答案:5 悬赏:40 手机版
解决时间 2021-02-12 12:41
- 提问者网友:容嬷嬷拿针来
- 2021-02-12 04:58
SQL用sum结果有误
最佳答案
- 五星知识达人网友:不想翻身的咸鱼
- 2021-02-12 06:26
float是近似值类型,数据不精确,最好用decimal或者numeric类型
全部回答
- 1楼网友:枭雄戏美人
- 2021-02-12 11:49
to_number后再sum追问float也算数字类型啊
- 2楼网友:蓝房子
- 2021-02-12 10:11
你sum后他会自动把你的数据类型往上一级扩充的,你如果还想要你的原定类型就在前面加一个convert。追问就算再转换类型那还是有十位小数啊
- 3楼网友:像个废品
- 2021-02-12 08:55
字段里虽然是两位的,但实际浮点的格式不是两位,
float类型中小数位数为7位,即可精确到小数点后7位,表示范围为1.5e - 45~ 3.4e + 38。对于一个小数其默认类型为double型,如果需要指定为float型,需要在小数后面添加F或f后缀。
要固定小数位要用decimal或numeric
例,decimal(2,1),有效长度为2,小数位占1位。
或者在原有有数据基础上进行四舍五入
Sql截取浮点小数位数,不四舍五入
round(551.239567,2,0)
结果:551.24
round(551.239567,2,1)结果:551.23
第一个2表示截取2位第二个0,1分别表示0是四舍五入,0以外是截取追问也就是说如果是float类型的就无法避免哦,必须进行四舍五入哦,那我有几个字段,为什么只有n7这个字段会出现这种情况,其他字段还是有小数点后两位,但是sum累加后是正确的
float类型中小数位数为7位,即可精确到小数点后7位,表示范围为1.5e - 45~ 3.4e + 38。对于一个小数其默认类型为double型,如果需要指定为float型,需要在小数后面添加F或f后缀。
要固定小数位要用decimal或numeric
例,decimal(2,1),有效长度为2,小数位占1位。
或者在原有有数据基础上进行四舍五入
Sql截取浮点小数位数,不四舍五入
round(551.239567,2,0)
结果:551.24
round(551.239567,2,1)结果:551.23
第一个2表示截取2位第二个0,1分别表示0是四舍五入,0以外是截取追问也就是说如果是float类型的就无法避免哦,必须进行四舍五入哦,那我有几个字段,为什么只有n7这个字段会出现这种情况,其他字段还是有小数点后两位,但是sum累加后是正确的
- 4楼网友:末日狂欢
- 2021-02-12 07:44
sqlserver无法使用to_number函数
cast(SUM(n7) as decimal(18,2))
用这样就好了追问亲,你这个是保留有效数字啊,但是我的n7字段里的数据都是小数点后两位的,没有10位的,怎么用sum累加后会变成10位的了追答哎,这个没办法啊
SqlServer的帮助中是这样描述float类型的:用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。
所以今后这个类型一定要慎用
cast(SUM(n7) as decimal(18,2))
用这样就好了追问亲,你这个是保留有效数字啊,但是我的n7字段里的数据都是小数点后两位的,没有10位的,怎么用sum累加后会变成10位的了追答哎,这个没办法啊
SqlServer的帮助中是这样描述float类型的:用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。
所以今后这个类型一定要慎用
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯