加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

在PHP中,如何打印一个带有2位小数的数字,但只有在已经有小数的情

发布时间:2020-12-13 22:14:12 所属栏目:PHP教程 来源:网络整理
导读:我有一个基本的index.php页面,其中包含一些我想在几个地方打印的变量 – 这里是变量: ?php $firstprice = 1.50; $secondprice = 3.50; $thirdprice = 20;? 我的挑战是,在文档的后面,当我打印时,我得到的价格没有第二个’0’的价格 – 这就是发生的事情: ?p
我有一个基本的index.php页面,其中包含一些我想在几个地方打印的变量 – 这里是变量:

<?php
  $firstprice = 1.50;
  $secondprice = 3.50;
  $thirdprice = 20;
?>

我的挑战是,在文档的后面,当我打印时,我得到的价格没有第二个’0’的价格 – 这就是发生的事情:

<?php print "$firstprice";?> // returns 1.5 - not 1.50!

所以 – 我知道如何用JS做到这一点,但是如何在PHP 5中完成?基本上我想打印第二个’0′,如果已经有一个小数,所以如果变量等于’3′,它保持为’3′,但如果它等于’3.5′,它转换为显示’3.50’用第二个’0’等

这是一个JS示例 – 什么是PHP等价物?

JS:

.toFixed(2).replace(/[.,]00$/,""))

非常感谢!!

解决方法

这很简单,它还可以让你调整格式:

$var = sprintf($var == intval($var) ? "%d" : "%.2f",$var);

如果它没有小数,它会将变量格式化为整数(%d),如果它有小数部分,它将格式化为两位小数(%.2f).

See it in action.

更新:正如Archimedix所指出的,如果输入值在范围(2.995,3.005)内,这将导致显示3.00.这是一个改进的检查,修复了这个问题:

$var = sprintf(round($var,2) == intval($var) ? "%d" : "%.2f",$var);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读