我正在生成用于设置stroke-opacity的selectlist选项,例如:
<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
。可以请任何人告诉我这里发生了什么?
答案 0 :(得分:3)
尝试使用decimal
代替double
。 Since 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>
答案 1 :(得分: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>