相关疑难解决方法(0)

将float转换为纯字符串表示形式

所以,

问题

我的问题是关于简单的事情:如何将数字字符串转换为它的普通("本机")表示.这意味着:如果数字字符串已经处于普通视图中,请保持原样,但如果它是科学记数法,则转换它.样品:

"3"          -->  "3"
"1.5"        -->  "1.5"
"-15.482E-2" -->  "-0.15482"

数字字符串应该是有效的,如果不是 - 那么它不是转换的情况(我们可以自由地返回null或空字符串,例如).

用例

这是必要的,bcmath因为它不适用于科学浮标.因此,它们需要转换为普通字符串(在此处询问).这个用例的重要结果是数字字符串可以是1E-300或类似的东西1E+500.因为我们正在合作bcmath- 它的目的是处理这些事情.

我的方法

就目前而言,我已经使用实现了这一点,例如:

function parseFloat($string)
{
   $string = (string)$string;
   if(preg_match('/^[+-]?(\d+|\d+\.\d*)[Ee]([+-]?)(\d+)$/', $string, $matches))
   {
      $precision = false!==($dot=strpos($matches[1], '.'))
                   ?strlen($matches[1])-$dot-1
                   :0;
      $precision = $matches[2]=='-'
                   ?$precision + (int)$matches[3]
                   :$precision - (int)$matches[3];
      return number_format($string, $precision<0?0:$precision, '', '');
   }
   if(preg_match('/^[+-]?(\d+|\d+\.\d+)$/', $string))
   {
      return $string;
   }
}
Run Code Online (Sandbox Code Playgroud)

这个问题

我觉得应该有更简单明智的方法来做到这一点.如何在PHP中以更简单的方式实现这一点?可能是一些棘手的sprintf()格式?

重要提示:我不想处理精确度.我想要黑盒子.在那里传递数字 - 得到字符串作为输出.就这样.不想处理任何其他事情.事实上,我所有的正则表达式都是关于计算长度和精度的 - 所以,当然,如果明确地传递它们(例如参数) …

php format floating-point

13
推荐指数
1
解决办法
5541
查看次数

用PHP截断浮点数

当浮点数需要在浮点之后被截断为某个数字时,事实证明它不容易完成.例如,如果必须在点之后对第二个数字进行截断,则数字应该是
45.8976 => 45.89,0.0185 => 0.01
(点之后的第二个数字不是根据点之后的第三个数字舍入).
round(),number_format(),sprintf()等函数围绕数字并打印出
45.8976 => 45.90,0.0185 => 0.02

我遇到了两个解决方案,我想知道它们是否足够好以及哪个更好用

45.8976 => 45.89, 0.0185 => 0.01
Run Code Online (Sandbox Code Playgroud)

php floating-point truncate floating-accuracy

11
推荐指数
4
解决办法
4万
查看次数

小数点后两位不四舍五入(正数和负数)

我不敢相信这真的是来向我提出问题的。但我的数据库中有一些十进制值0.9999999,即使用:

number_format($result['debit'], 2);

number_format($result['debit'], 2,".","");

number_format(floor($result['debit']*pow(10,2))/pow(10,2),2); 
Run Code Online (Sandbox Code Playgroud)

我不断地1从原来的0.999999.

我尝试什么似乎并不重要,它会不断地对数字进行四舍五入。我该怎么做才能简单地得到0.99?我已经到了要爆炸的地步了(目前我指的是函数)

另一个注意事项是这需要使用负数。

php

4
推荐指数
1
解决办法
4851
查看次数

PHP舍入数字

我似乎无法弄清楚如何在PHP中总结.ceil()将是显而易见的选择,但我需要round()提供与其第二个参数"精度" 相同的功能.这是一个例子:

// Desired result: 6250
echo round(6244.64, -2); // returns 6200
echo round(6244.64, -1); // returns 6240
echo ceil(6244.64) // returns 6245

我需要数字总是向上舍入,以便我可以根据图表的参数计算相等的除数.

php rounding

3
推荐指数
1
解决办法
2923
查看次数

在PHP中向下舍入的最佳方式

我有一个表单,当用户填写他们拥有的瓶子总数时,它会插入到数据库中,然后应该总结出有多少个案例.

例如在葡萄酒中 - 有12个瓶子,如果用户放入100瓶,它应该除以12并给出总和8.33333333.

$bottles = "100";
Run Code Online (Sandbox Code Playgroud)

将这个问题归结为8号的最佳方法是什么,然后确定剩下多少瓶从未成为完整的案例?

希望这是有道理的.

php

-5
推荐指数
1
解决办法
440
查看次数