【问题标题】:How to get first 4 digits from an integer in PHP如何从PHP中的整数中获取前4位数字
【发布时间】:2014-07-17 13:41:08
【问题描述】:

经过几次计算,我得到:

$int = 14.285714285714;

我怎样才能只取前四位数字?预期输出:14.28

【问题讨论】:

  • 您需要以精度 2 舍入它吗?如果整数是 123.45 你想取什么?请更具体并添加更多示例。

标签: php integer


【解决方案1】:

用字符串函数来做这件事绝对是错误的做法,而且这些几乎相同的答案看起来很垃圾。如果要对数字进行四舍五入,请对数字进行四舍五入!

$int = round(14.285714285714, 2);

要截断(与舍入相反),floor 是 PHP 中的正确函数:

$int = floor(14.285714285714 * 100) / 100;

两者都无需任何类型转换或强制转换即可工作。

另请注意,带小数位的数字绝对不是整数。

【讨论】:

  • 他不想四舍五入他想要前4位-1
  • 我刚刚在 cmd 行上做了这个,我得到了14.29。 OP想要14.28
  • @Joshua Huber 看看我的回答
  • 哈哈,我们同时用floor写了同样的想法。我被一些沉默的反对者反对。当心。
【解决方案2】:

使用substr函数

$int = 14.285714285714;
echo substr($int, 0, 5);

$newint = (float)substr($int, 0, 5);

如果你想四舍五入你可以使用的数字

round($int, 2);

输出将是:14.29


LINK HOW TO ROUND

【讨论】:

  • 真的要转换成 int 吗?
  • 这样就完成了。我会尽快接受答案。谢谢大家的回复:)
  • 真的,不要接受这个,这是对数字进行四舍五入的错误方式。
  • 他不想对数字进行四舍五入......他想要数字的前 4 位 @Synchro
【解决方案3】:

试试数字格式,

string number_format ( float $number [, int $decimals = 0 ] )

所以

$int = 14.285714285714;
$small = (float)number_format (  $int ,2,'.', '' ); //gets rid of the "," for thousand separator

http://us2.php.net/manual/en/function.number-format.php

【讨论】:

  • 对使用数字格式来格式化数字真的投了反对票,那有什么用呢?
  • number_format 用于格式化数字以进行显示,而不是用于舍入。如果在计算中使用您的示例,它将产生错误的答案。
  • Op 在哪里说它用于计算?它说“预期输出:”,更不用说您可以简单地将其转换为浮点数。
  • 同意不赞成投票。使用 number_format 为您提供可行的解决方案 +1。由于最初的问题含糊不清,我们必须提供假设。
  • Dito,我只是喜欢数字格式,因为它让您可以选择更改小数点和千位分隔符。一般来说,如果我对其进行计算,我只会对我显示的结果进行四舍五入,因为这对于浮点数来说会更准确。在计算之前四舍五入你可能会减少 +/- 1。
【解决方案4】:

floor(100 * 14.285714285714) / 100

14.28

【讨论】:

  • 好的,沉默的投票者,大声说出来。有什么问题?此代码返回 OP 所需的输出 14.28。
  • “我什么时候应该投反对票?每当你遇到一个极其草率、不费吹灰之力的帖子,或者一个明显不正确且可能非常不正确的答案时,请使用你的反对票。” - stackoverflow.com/help/privileges/vote-down
猜你喜欢
  • 2021-11-06
  • 1970-01-01
  • 2011-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 2011-06-28
  • 1970-01-01
相关资源
最近更新 更多