我如何在PHP中保持两个零

Mat*_*iby 21 php rounding

我有这个PHP

<?php echo round($price, 2); ?>
Run Code Online (Sandbox Code Playgroud)

$price可能1.0000

我想,1.00但我只得到1

有任何想法吗

Joh*_*eed 57

number_format有效:

echo number_format($price, 2);

  • 为了安全起见,请使用“number_format($price, 2, '.', '');”,这样您的号码就不会受到区域设置或千位分隔符的影响。 (3认同)
  • 请注意(AFAIK)这是区域设置,在某些设置下它可能会输出“ 1,00”-尽管在这里我可能会误会。 (2认同)

Tim*_*per 32

以下printf()调用适合您:

<?php printf("%.2f", $price); ?>
Run Code Online (Sandbox Code Playgroud)

该语法的文档最好在sprintf()页面上进行描述.

  • @FakeCodeMonkeyRashid它发生在对`round()`的调用中,然后在打印时,它被格式化为正好有2个尾随小数. (3认同)
  • @nickf:蒂姆应该简单地谈一谈.当有人看到这个答案时,如果PHP文档处于脱机状态会发生什么? (2认同)
  • 如果你想要舍入是准确的(我想你会这样做)我永远不会使用`printf()`.`printf('%.2f |%.2f |%.2f |%.2f',1.005,1.015,1.025,1.035);`输出**1.00 | 1.01 | 1.02 | 1.03**_(而不是1.01 | 1.02 | 1.03 | 1.04)_和`printf('%.3f |%.3f |%.3f |%.3f',1.0005,1.0015,1.0025,1.0035);`输出**1.000 | 1.002 | 1.002 | 1.004**_(而不是1.001 | 1.002 | 1.003 | 1.004)_.我使用`number_format($ x,2);`(记住这可以识别语言环境)或`printf('%.2f',round($ x,2));` (2认同)

Lou*_*uis 10

number_format是你最好的选择.

string number_format ( float $number , int $decimals = 0 , string $dec_point = '.' , string $thousands_sep = ',' )
Run Code Online (Sandbox Code Playgroud)

例:

<?php echo number_format(1.0000, 2, '.', ','); ?>
Run Code Online (Sandbox Code Playgroud)