【问题标题】:rounding a number, NOT necessarily decimel PHP四舍五入,不一定是十进制 PHP
【发布时间】:2013-12-03 16:00:39
【问题描述】:

我有一个问题。

我正在使用 php 根据用户指定的操作生成一个数字

这个变量被称为

$new

$new 是一个整数,无论​​答案如何,我都希望能够将 $new 舍入为 12 位数字

我想我可以使用 round() 或 ceil()

但我相信这些用于四舍五入的小数位


所以,我在 $new 中存储了一个整数,当回显 $new 时,我希望它打印 12 位数字。数字是600亿还是0.00000000006

【问题讨论】:

  • sprintf('%10d', $new)
  • “我希望能够将 $new 舍入为 12 位数字” 我不明白
  • 我有一个整数存储在 $new 中,当 $new 被回显时,我希望它打印 12 位数字。数字是 600 亿还是 0.00000000006。所以我假设这个数字需要在某个地方四舍五入
  • 请解释您的舍入算法。我假设 1 应该四舍五入到 100000000000?
  • 让我尝试更简单一点,我有一个显示 int 变量的文本框。文本框只能显示 12 位数字,但输入的数字可能更多。

标签: php integer


【解决方案1】:

如果我理解正确

function showNumber($input) {
  $show = 12;
  $input = number_format(min($input,str_repeat('9', $show)), ($show-1) - strlen(number_format($input,0,'.','')),'.','');

  return $input;
}

var_dump(showNumber(1));
var_dump(showNumber(0.00000000006));
var_dump(showNumber(100000000000000000000000));

给予

string(12) "1.0000000000"
string(12) "0.0000000001"
string(12) "999999999999"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 2015-07-30
    • 2020-10-09
    • 2010-09-24
    • 1970-01-01
    相关资源
    最近更新 更多