首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP的intval()和strval()发生了什么?

PHP的intval()和strval()发生了什么?
EN

Stack Overflow用户
提问于 2010-12-25 20:59:11
回答 2查看 1.7K关注 0票数 1

所以我得到了这个:

代码语言:javascript
复制
$n = "19.99";

echo (int) ($n * 100);
echo (int) strval($n * 100);

这将输出以下内容:

代码语言:javascript
复制
1998
1999

我就是不明白。发生了什么?$n * 100是1999 (浮点数),为什么它们不一样?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-25 21:04:25

浮点数没有任意的精度。19.99 * 100的结果实际上表示为1998.9999999999

如果打印出来,它会显示为1999。这就是strval()所做的。而(int)将把它降到最低。

票数 6
EN

Stack Overflow用户

发布于 2010-12-25 21:09:24

还可以检查...

http://php.net/manual/en/function.ceil.php

http://php.net/manual/en/function.floor.php

http://php.net/manual/en/function.round.php

您将看到一切是如何工作的。

代码语言:javascript
复制
echo round(9.5, 0, PHP_ROUND_HALF_UP);   // 10
echo round(9.5, 0, PHP_ROUND_HALF_DOWN); // 9
echo round(9.5, 0, PHP_ROUND_HALF_EVEN); // 10
echo round(9.5, 0, PHP_ROUND_HALF_ODD);  // 9
echo round(8.5, 0, PHP_ROUND_HALF_UP);   // 9
echo round(8.5, 0, PHP_ROUND_HALF_DOWN); // 8
echo round(8.5, 0, PHP_ROUND_HALF_EVEN); // 8
echo round(8.5, 0, PHP_ROUND_HALF_ODD);  // 9
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4530324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档