防止number_format从舍入数字 - 添加逗号并保持小数点 - PHP

Cod*_*ien 3 php decimal number-formatting

数字格式添加我想要的逗号但删除小数.

echo number_format("1000000.25");
Run Code Online (Sandbox Code Playgroud)

这将返回1,000,000

我希望它返回1,000,000.25

我需要逗号和小数,没有任何数字四舍五入.我的所有值都是小数.它们的长度各不相同.

我是否必须使用数字格式以外的其他内容?

Fir*_*One 9

如果你的意思是它们的长度不同与小数部分有关,请看一下这段代码:

function getLen($var){
    $tmp = explode('.', $var);
    if(count($tmp)>1){
        return strlen($tmp[1]);
    }
}
$var = '1000000.255555'; // '1000000.25'; // '1000000';
echo number_format($var, getLen($var));
Run Code Online (Sandbox Code Playgroud)


一些测试

  • 输出1000000.255555:

1,000,000.255555


输出1000000.25:

1,000,000.25


输出1000000:

百万


它计算了之后有多少个字符,.并将其用作函数中的number_format参数;

否则只需使用常数而不是函数调用.


还有一些参考......


手册 - > number_format():

string number_format ( float $number [, int $decimals = 0 ] )
Run Code Online (Sandbox Code Playgroud)

你可以在描述中看到


数被格式化.

decimals
设置小数点数.

还有一点:

[...]如果给出了两个参数,则数字将被格式化为小数位小数,前面有一个点("."),每组数千个之间有一个逗号(",").


Exo*_*imp 7

$number = '1000000.25';
echo number_format($number, strlen(substr(strrchr($number, "."), 1)));
Run Code Online (Sandbox Code Playgroud)

说明:Number Format采用第二个参数,该参数指定文档中指出的所需小数位数. Stack溢出答案告诉您如何获取所提供字符串的小数位数