intval碰到小数为什么会减1

WBOY
Lepaskan: 2016-06-13 11:57:21
asal
1066 orang telah melayarinya

intval遇到小数为什么会减1
$a = 2.3;
echo ($a*100);//输出230
echo intval($a*100);//输出229
刚开始用的时候我都凌乱了,不知道这是怎么回事
查了好多资料才找到答案,如下
我们看到的:2.3在机器中实际是这样的:2.299999999...具体为什么我也不知道
所以2.3*100在机器中实际是2.299999..*100=229.99...
然后intval作用于他,省略了小数部分,于是就成了229,而不是230
但是intval(1.0)仍然是1,原因是1.0在机器中也是1.0,而不是0.99999...
这种机制应该只会在小数点后发挥作用吧

求大神从根源解释下这个神奇的问题
------解决方案--------------------
printf('%.16f', 2.3); //2.2999999999999998

你在学习计算机基础知识时,没有看二进制小数的章节吗?

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!