2012-07-17 81 views
0

我生成選擇列表的選項用於設置行程不透明性,如:選擇列表選項有一些意想不到的價值

<label for="so"> 
    Stroke-opacity :</label> 
<select id="so"> 
    @for (double i = 1; i >= 0; i-=0.1) 
    { 
     <option value="@i">@i</option> 
    } 
</select> 

我的問題是,最後一個選項(這應該有值0)有一些意想不到的值是:1.38777878078145E-16。可以請任何人告訴我這裏發生了什麼?

enter image description here

回答

3

嘗試使用類型的decimal代替doubleSince double is a floating-point number, it can lose precision

<label for="so"> 
    Stroke-opacity :</label> 
<select id="so"> 
    @for (decimal i = 1M; i >= 0M; i-=0.1M) 
    { 
     <option value="@i">@i</option> 
    } 
</select> 
+0

感謝的答案,它的工作原理 – 2012-07-17 12:41:33

0

試試這個

<select id="so"> 

<option value="1">1</option> 
@for (int i = 9; i > 0; i--) 
{ 
    string value = string.Format("0.{0}", i); 

    <option value="@value">@value</option> 
} 
</select>