2017-03-21 54 views
0

對於我們的一個項目,我們需要一個支持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版本28年6月5日

+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>"; 
} 

浮點數的舍入誤差受到影響。