重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
写个函数 自己调用处理就行了CREATE FUNCTION `NewProc`(format_vale VARCHAR(100)) RETURNS varchar(100)BEGIN DECLARE dec_number VARCHAR(4000); DECLARE dec_number_vale VARCHAR(4000); SET dec_number = ''; SET dec_number_vale = CAST(format_vale AS CHAR); WHILE dec_number_vale IS NOT NULL DO -- 剪切字符串 SET dec_number = right(dec_number_vale,1); IF dec_number = '0' || dec_number= '.' THEN SET dec_number_vale = LEFT(dec_number_vale ,LENGTH(dec_number_vale)-1); ELSE RETURN dec_number_vale; END IF; END WHILE;END;
创新互联是一家专业提供齐齐哈尔企业网站建设,专注与成都网站设计、成都做网站、H5高端网站建设、小程序制作等业务。10年已为齐齐哈尔众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
1.四舍五入 round(123.5)
2.舍去小数 floor(123.5)
3.如果小数部分有值就进一 ceil(123.5) 或者 ceiling(123.5)
以上经过我在mysql客户端的测试,没有问题的,你可以在mysql客户端测试下,代码也给你吧: select round(123.5),floor(123.5),ceil(123.5);
X是数值,D是保留小数的位数。
其作用就是按照小数位数,进行数值截取(此处的截取是按保留位数直接进行截取,没有四舍五入)。
1.结果直接截断
2.不会有0的填充,比如¥330.8,不会显示¥330.80
转换类型
结果会有0的填充
X是数值,D是保留小数的位数。
1.结果四舍五入。
2.不会有0的填充。
$amount = 666666;
$number = substr($newAmount = $amount/10000.0, 0, stripos($newAmount, ".")+2);
echo "金额:$number 万";
$number = substr($newAmount = $amount/10000.0, 0, stripos($newAmount, ".")+3);
echo "金额:$number 万";
float本身保存的就是近似值,因为你后面有e-06这样的字符,这个其实也是数字的一部分,这么看,不管你怎么存小数位都是不够的,比如这个3.90104e-06,翻译过来应该是0.00000390194,你估计float的话要怎么写,他是8位的精度,这里来看最好就是0.0000039也就这样了,我想就算这个也不是你要的吧。
所以个人觉得办法就是换一个数据类型,最简单的就是double(我估计16位的精度应该够了吧,不过他和float一样,存一个近似值,你可以试试写成double(16,14)试试,如果还不行,那就只能用decimal了),如果还是进位,那就用decimal(65位的定点数,怎么算都够了。)
如果还不行就祭出终极大招字符型,这个总没有问题,当然如果你还要计算,那就最好别用这个。
这个问题,直接在源头解决;
Mysql数据库表里面,设置你要取整的字段的数据类型为int,即可
不用写进去是小数,用的时候再取整,这么麻烦