asp.net下拉小数值错误舍入

时间:2013-06-04 11:12:15

标签: c# asp.net math double decimal

当我尝试从下拉列表中获取值时,我遇到了奇怪的错误。所有值都是十进制的,例如0.1,0.5,0.7等 当我转换为十进制时,我得到1,5,7,当我转换为双倍时,我得到1.0,5.0,7.0。 例如,以十进制或双精度值获取值为0.1或0.5的正确方法是什么? 谢谢,Laziale

示例:

   <asp:DropDownList ID="ddlAgentPercEdit" runat="server">
                                 <asp:ListItem Value="">Select Percentage</asp:ListItem>
                                 <asp:ListItem Value="0.01">0.01</asp:ListItem>
                                 <asp:ListItem Value="0.05">0.05</asp:ListItem>        
                                 <asp:ListItem Value="0.1">0.1</asp:ListItem>  
                                 <asp:ListItem Value="0.3">0.3</asp:ListItem>                                    
                                 <asp:ListItem Value="0.5">0.5</asp:ListItem>
                                 <asp:ListItem Value="0.6">0.6</asp:ListItem>
                                 <asp:ListItem Value="0.7">0.7</asp:ListItem>
                                 <asp:ListItem Value="0.75">0.75</asp:ListItem>                                                                  
                                 <asp:ListItem Value="0.8">0.8</asp:ListItem>                                 
                                 <asp:ListItem Value="0.9">0.9</asp:ListItem>                                 
                                 <asp:ListItem Value="0.95">0.95</asp:ListItem>
                                 <asp:ListItem Value="0.99">0.99</asp:ListItem>
                             </asp:DropDownList>

 util.Update(Convert.ToInt32(hfLifee), Convert.ToDecimal(ddlAgentPercEdit.SelectedValue), Convert.ToDouble(ddlAgentPercEdit.SelectedValue));

我得到0.9的示例值:9,9.0。 我也试过单身,我得到9.0 感谢

1 个答案:

答案 0 :(得分:3)

这是一个本地化问题。尝试使用CultureInfo.InvariantCulture

decimal d = decimal.Parse(ddl.SelectedValue, CultureInfo.InvariantCulture);

许多文化都使用千分之一而不是小数分隔符。

Demo