数组值的选择数字格式

Posted

技术标签:

【中文标题】数组值的选择数字格式【英文标题】:Selectional number formatting of array values 【发布时间】:2013-01-16 16:55:17 【问题描述】:

我在一个 mysql 表中有两种类型的数字(FLOAT 和 BIGINT)。

A:0.002

乙:51443234

我需要替换“。”在数字中带有“,”,我可以通过 number_format 来完成

foreach ($row as $key => $val)  
                if (is_numeric($val)) 

                        $row[$key] = number_format($val,'3', ',', '.'); 
                
            

新格式是:

答:0,002

B:51.443.234,000

但我不希望数字 B 中的尾随零,所以我尝试分别格式化 FLOAT 和 BIGINT 值:

foreach ($row as $key => $val)  
                if (is_numeric($val)) 
                        if (is_float($val)) 
                        $row[$key] = number_format($val,'3', ',', '.'); 
                        else 
                        $row[$key] = number_format($val,'0', ',', '.'); 
                
            

但这不起作用。

我不确定问题出在哪里,是否可以在不将值转换为字符串的情况下做到这一点。

(我也不知道转换成字符串有什么缺点..)

您能展示一下正确的方法吗? 谢谢。

【问题讨论】:

【参考方案1】:

php 是一种松散类型的语言,因此它不知道 FLOATSBIGITS。事实上,0,00251.443.234 都不是有效值。

为了进行计算,不要改变任何东西。为了显示您的数字,您可以根据需要设置它们的格式,即使它们是字符串。

1. <?php
2. $float = 2.25;
3. $bigInt = 4235234;
4.
5. $commaFloat = 2,25;
6. $commaBigInt = 4.235.234;
7. ?>

Parse error: syntax error, unexpected ',' on line 5

http://codepad.org/epIuX8MZ

【讨论】:

那么,您是否建议在代码中一一格式化每个变量? 不,仅在显示数字时。编写一个函数来根据需要格式化数字,并在每次要输出数字时调用该函数。 &lt;?= myNumberFormat($someValue); ?&gt; 我有近 50 个数字变量,我必须列出它们。所以我将编写两个不同的函数(一个用于浮点数,一个用于大整数),然后在需要时使用它们。这是一个解决方案,但我仍然想知道我是否可以只用一个功能来做到这一点。谢谢。 当然可以。您可以使用函数参数显式定义数字类型。例如,function myNumberFormat($number, $format) OR 尝试自动找出这个数字的格式,也许使用 RegEx。它应该是相对容易编写的函数。玩得开心! 感谢您的想法。我写了一个这样的函数:myNumberFormat($number, $decimal) for bigint numbers $decimal is 0, for float numbers it depends..

以上是关于数组值的选择数字格式的主要内容,如果未能解决你的问题,请参考以下文章

经典排序算法——选择排序

格式化包含相似键值的数组数组

数组值的排序应类似于(字母、数字和特殊字符)

提取数组中非 NaN 元素的索引和值的正确方法

在 1D NumPy 数组中查找值的索引/位置(具有相同的值)[重复]

ruby 编写一种方法模式,该模式将数字数组作为输入,并返回最常用值的数组。如果只有一个 -