php - 满足条件语句后for循环不中断
问题描述
我正在尝试增加 php 的小数位,但它不会在 if 语句中中断
for($x = 0; $x <= 1; $x += 0.001){
//0.01 = 0.010
if($x===0.01){
break;
}
echo $x.'<br>';
}
解决方案
浮点运算在 PHP(或实际上任何语言)中并不精确。阅读浮点数学是否被破坏,以大致解释为什么会出现这种情况。结果,循环计数器可能永远不会有确切的值0.01
。相反,您可以在虚拟变量超过阈值时中断0.01
:
for ($x=0; $x <= 1; $x += 0.001) {
// 0.01 = 0.010
if ($x >= 0.01) {
break;
}
echo $x . '<br>';
}
在本地测试时,上面的脚本正在打印:
0<br>0.001<br>0.002<br>0.003<br>0.004<br>0.005<br>0.006<br>0.007<br>0.008<br>0.009<br>
推荐阅读
- python - 如何使用训练结果来预测测试数据并得到误分类错误?
- docker - 多阶段docker构建,防止特定阶段的并发
- reactjs - 将React函数式组件作为函数的参数传递时,我应该如何用TS声明函数参数类型
- c# - 如何解决“'default_aspx' 不包含 'Button1_Click' 的定义”错误?
- xamarin - Xamarin Forms 应用中的嵌入式 Power App
- gstreamer - Gstreamer 管道下沉到 rtspclientsink 建议
- html - 为什么底部文本不粘在标题上(css)
- c - HAL_SD_ERROR_UNSUPPORTED_FEATURE
- owasp - 简单的英语触发 Modsecurity/WAF/CRS 规则
- hibernate - 带有外部生成标识符的 JPA/Hibernate