php - 在 PHP 中,如何打印带 2 位小数的数字,但前提是已经有小数?

标签 php javascript decimal

我有一个基本的 index.php 页面,其中包含一些我想在几个地方打印的变量 - 这里是变量:

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

我的挑战是,在文档的后面,当我打印时,我得到的价格没有价格中的第二个“0”——这是发生了什么:

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

SO - 我知道如何使用 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),如果有小数部分。

See it in action .

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

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

关于php - 在 PHP 中,如何打印带 2 位小数的数字,但前提是已经有小数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5648205/

相关文章:

php - 使用增量选项从我的 SQL 数值中选择选项框

PHP文件编码

javascript - 利用源映射的堆栈跟踪

javascript - 如何在大型 vue.js 应用程序中构建组件?

mysql - 小数和整数数据类型上的“Not Null”语法错误

php - fatal error : Cannot use object of type classname as array

php - 至少选择一个复选框,PHP

javascript - 对包含字符串、日期和数字的数组进行排序

ruby - 我有一个像 30.6355 这样代表钱的数值,如何四舍五入到小数点后两位?

MySQL 小数列的值超出范围