2017-03-21 4 views
0

です。私たちのプロジェクトの1つは、IEで数値ローカリゼーションをサポートする値入力が必要で、ここに示すように(link)IEはカンマ区切りをサポートしていません。この問題を回避するために、すべての値がコンマで区切られたドロップダウンを作成しました。0は1.87905246918E-14

この範囲を自動的に生成するのに奇妙な問題が発生しました。これは0以外のすべての値に対して機能します。私は、この奇妙な動作を解決するのに役立つ解決法があることを願っています。 コードは、私が使用します。

$select_number = ""; 

for ($i = 10; $i >= 0; $i -= 0.1){ 
    $value = str_replace(".", ",", $i); 
    $select_number .= "<option value='" . $value . "' $selected>" . $value . "</option>"; 
} 

このコードは

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

とのインタフェースに配置された。これは、レンダリング、次のドロップダウン

0 = 1,87905246918E-14

0は1,87905246918Eになっていることに注意してください-14。私がforループの順序をfor($i = 0; $i <= 10: $i += 0.1)に変更すると、すべて正常に動作します...誰もがこの解決策を知っていますか?

私の代わりに、整数を通じてPHPのバージョン5.6.28

+1

浮動小数点数に頼らないでください:http://stackoverflow.com/q/34373274/3906760 – MrTux

+0

https://secure.php.net/manual/function.round.phpを使用してください。 – MrTux

答えて

1

ループを使用します。

浮動小数点数は丸め誤差に苦しむ

$select_number = ""; 

for ($i = 100; $i >= 0; $i -= 1){ 
    $value = str_replace(".", ",", $i/10); 
    $select_number .= "<option value='" . $value . "' $selected>" . $value . "</option>"; 
} 

関連する問題