Php 0是1.87905246918E-14

Php 0是1.87905246918E-14,php,for-loop,select,localization,Php,For Loop,Select,Localization,对于我们的一个项目,我们需要一个在IE中支持数字本地化的值输入,从这里可以看出()IE不支持逗号分隔。为了解决这个问题,我想制作一个下拉列表,其中所有值都用逗号表示 我在自动生成这个范围时遇到了一个奇怪的问题。它适用于除0以外的所有值。我希望有一个解决方案(或逻辑解释)来解决或帮助我理解这种奇怪的行为。 我使用的代码是: $select_number = ""; for ($i = 10; $i >= 0; $i -= 0.1){ $value = str_replace("."

对于我们的一个项目,我们需要一个在IE中支持数字本地化的值输入,从这里可以看出()IE不支持逗号分隔。为了解决这个问题,我想制作一个下拉列表,其中所有值都用逗号表示

我在自动生成这个范围时遇到了一个奇怪的问题。它适用于除0以外的所有值。我希望有一个解决方案(或逻辑解释)来解决或帮助我理解这种奇怪的行为。 我使用的代码是:

$select_number = "";

for ($i = 10; $i >= 0; $i -= 0.1){
    $value = str_replace(".", ",", $i );
    $select_number .= "<option value='" . $value . "' $selected>" . $value . "</option>";
}
$select_number=”“;
对于($i=10;$i>=0;$i-=0.1){
$value=str_替换(“.”,“,”,“,$i);
$select_number.=''.$value.'';
}
此代码放置在与的接口中

<select class="form-control" id="myname" data-live-search="true" name="myname">
    <?php echo $select_number; ?>
</select>

这将呈现以下下拉列表


请注意,0变成了187905246918E-14。如果我将for循环的顺序改为
for($I=0;$I通过整数循环:

$select_number = "";

for ($i = 100; $i >= 0; $i -= 1){
  $value = str_replace(".", ",", $i/10 );
    $select_number .= "<option value='" . $value . "' $selected>" . $value . "</option>";
}
$select_number=”“;
对于($i=100;$i>=0;$i-=1){
$value=str_替换(“.”、“,”、$i/10);
$select_number.=''.$value.'';
}

浮点数会出现舍入错误。

而是通过整数进行循环:

$select_number = "";

for ($i = 100; $i >= 0; $i -= 1){
  $value = str_replace(".", ",", $i/10 );
    $select_number .= "<option value='" . $value . "' $selected>" . $value . "</option>";
}
$select_number=”“;
对于($i=100;$i>=0;$i-=1){
$value=str_替换(“.”、“,”、$i/10);
$select_number.=''.$value.'';
}

浮点数存在舍入错误。

不依赖浮点数:使用不依赖浮点数:使用