大坑之浮点数显示问题
发表日期:2022-08-15 16:47:01 | 来源: | | 浏览(1252) 分类:SQLServer
以下情况在php+SQLserver下经过验证是存在问题的,其它语言请自酌。
一、字段类型是float类型时
输出
显示正常,十分具有迷惑性,开发的时候你以为是没问题的,
但是
输出
150.12 显示为 15.119999999999999
这是太坑了,我们的项目是重构一个用了15年+的项目,库不变只做程序,项目里见到最多的字段就是金额小数点,做到后面发现这个问题,所有输出的位置到处都得格式化去改!
还有一个问题是,如果你希望的是x.xx这种保留两位的格式,不好意思,不建议用float类型!因为12.00 进库即存为12,出库也12,不格式化没法是12.00!
对比之下mysql是没有问题的,因为是是这样定义的float(9,2)保留两位!
二、字段类型是 decimal(18, 2) 类型时
0.00 显示为 .00
输出:
导致于 所有显示地方都得把 .00 换成 0.00。
(后发现可能是php-SQLserver驱动的兼容问题一个项目用的pdo_dblib显示是好的,一个用的pdo_sqlsrv显示不正常,可能跟驱动版本有关系,反正用php+SQLserver的小伙伴格外注意一下),