问个mysql方面的问题?
我是想将一个数的结尾0去掉,比如
0.00000063600 变成 0.000000636
比如
300.000000 变成 300
但我用
select 0+cast(0.00000063600 as char) as price
在 navicate 执行是对的,得到 0.000000636,
为啥我在laravel上用
$price = DB::select(‘select 0+cast(0.00000063600 as char) as price’);
print_r($price);
Array (
[0] => stdClass Object (
[price] => 6.36E-7
)
)
帮我转成了科学记数法形式了,有没有方法不要让它转成科学记数法形式的?
mysql别用浮点数存价格啊,有误差
浮点型精度的问题。价格最小单位是1分,要不就使用
decimal
类型,设置保留两位小数——decimal(15,2)
,但是有个要求,存入的数必须是真正的小数两位,例如,批发价是0.134,那么存入后会变成0.13(会四舍五入),因此使用decimal
并且要避免精度丢失的话就要强制卡小数位数;还有一种情况,以微信支付为例,微信支付最小单位为1,也就是1分,因此可以使用整型存储价格,这样就不用担心精度丢失的问题,但是需要注意的时候,接口返回的话需要转换一下显示。