0

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

例子:

   <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 谢谢

4

1 回答 1

3

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

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

许多文化使用点作为千位而不是小数分隔符。

演示

于 2013-06-04T11:16:00.020 回答