Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php sprintf(或其他函数)用于整数/浮点的连续格式设置_Php - Fatal编程技术网

Php sprintf(或其他函数)用于整数/浮点的连续格式设置

Php sprintf(或其他函数)用于整数/浮点的连续格式设置,php,Php,我需要将数据库中注册的数字显示为浮点数 如果数字没有小数部分,则应显示为int,在其他情况下显示为十进制 例如: 8.00 should be displayed 8 8.45 should be displayed 8.45 现有代码使用了一个奇怪的(但函数式的解决方案)使用roud(): 我希望通过示例找到一些使用sprintf的解决方案,以获得一个更自我解释的代码(使用round的实际解决方案不是很容易理解) 你们中有谁面对过这个问题并且知道解决方案吗 (我曾尝试使用sprintf(),

我需要将数据库中注册的数字显示为浮点数

如果数字没有小数部分,则应显示为int,在其他情况下显示为十进制

例如:

8.00 should be displayed 8
8.45 should be displayed 8.45
现有代码使用了一个奇怪的(但函数式的解决方案)使用roud():


我希望通过示例找到一些使用sprintf的解决方案,以获得一个更自我解释的代码(使用round的实际解决方案不是很容易理解)

你们中有谁面对过这个问题并且知道解决方案吗 (我曾尝试使用sprintf(),但我无法掌握如何使用可变的小数)

尝试以下方法:

$numbers = array(
    8.00, 8.45, 20.00, '8.00', '8.45', '20.00'
);

foreach ($numbers as $nr) {
    echo (string)(double)$nr, '<br />';
}
$numbers=数组(
8.00, 8.45, 20.00, '8.00', '8.45', '20.00'
);
foreach(数字为$nr){
回声(字符串)(双)$nr,“
”; }
将显示8.45和

echo +'8.00';

将显示8;)

不太确定这是您想要的,但要将舍入代码缩短为一条语句,请使用此语句

$number = (int)$number == $number ? (int)$number : $number;

这个实现有什么奇怪的地方?有什么不对的,没有什么私人的,但它比Yoshi的解决方案更可读“实际的解决方案是不太容易理解的”使用注释怎么样?谢谢你的这个技巧。我选择这个解决方案(比使用echo的解决方案更具可读性)。浮点数和整数作为具有适当函数的特定类型存在是有原因的。有了上面的代码,浮点数
7E-10
将变成
7E-1
,因此从
0.0000000007
变成
0.7
@Shef你真的认为,从给定的问题来看,kemar会遇到这种问题吗?@Yoshi:我真的知道一个事实。@Shef这不是我问题的答案,更进一步,你为什么不提供一个更好的解决方案,这样我们就可以讨论该解决方案的优缺点了?
echo +'8.00';
$number = (int)$number == $number ? (int)$number : $number;