2012-07-17 76 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>