php - 带有浮点数的for循环中的PHP if条件
问题描述
for 循环中的 if 条件将在 (n) 次后停止工作。
我正在使用 PHP 7.3.6-1+ubuntu18.04.1+deb.sury.org+1
给定以下代码:
for($i = 0.99; $i<= 30.99; $i++){
echo $i;
if($i == 10.99){
echo '<--- selected';
}
echo '<br>';
}
输出
0.99
1.99
2.99
3.99
4.99
5.99
6.99
7.99
8.99
9.99
10.99<--- selected
11.99
12.99
13.99
14.99
15.99
16.99
17.99
18.99
19.99
20.99
21.99
22.99
23.99
24.99
25.99
26.99
27.99
28.99
29.99
当条件介于 之间时,这仍然成立,但是,不返回0.99 - 15.99
更改 之间的条件。16.99 - 29.99
<--- selected
我在循环中使用 int 进行了一些测试,如下所示,它似乎工作正常。
for($i = 0; $i<= 30; $i++){
echo $i;
if($i == 18){
echo '<--- selected';
}
echo '<br>';
}
我认为问题与这个浮点数(0.99 - 30.99)有关。
解决方案
让我们在开始比较之前清理浮动。
<?php
for($i = 0.99; $i<= 30.99; $i++){
$i = number_format((float)$i, 2);
echo $i;
if($i == 16.99){
echo '<--- selected';
}
if($i == 29.99){
echo '<--- selected';
}
if($i == 10.99){
echo '<--- selected';
}
echo '<br>';
}
推荐阅读
- python - 使日期时间线在 seaborn 绘图 x 轴上看起来不错
- java - java中定义为a = b时,为什么ArrayList.add()会向多个arraylist添加值?
- java - futures.forEach(CompletableFuture::join) 并行运行所有任务?
- angular - 更新 Angular 后的 Hmr 问题
- kotlin - 在 Kotlin 中获取 Wifi 扫描结果列表
- python - Python 诗歌 - 如何安装 64 位虚拟环境?
- android - 每次打开 PWA 时(从技术角度来看)究竟会发生什么?
- javascript - 使用 JavaScript 比较两个 HTML 表单的值
- javascript - Ajax DELETE请求路径不一致
- c# - 如何将 C# 方法添加到现有的大型 wix 脚本