显示浮点到文本框的类型为“数字”

Tia*_*nho 6 c# asp.net floating-point textbox

关于将文本框字符串转换为浮点值或允许类型为“ number”的文本框允许使用小数点的问题很多,但是,我似乎找不到与显示浮点值相关的任何内容类型设置为“数字”的文本框。

到目前为止,我所拥有的是一个文本框,其类型为“ number”和step =“ 0.01”。最小值也为“ 0”。它显示如下:

<asp:TextBox ID="TextBox1" runat="server" TextMode="Number" step="0.01" Width="140px" min="0"></asp:TextBox>
Run Code Online (Sandbox Code Playgroud)

它可以很好地用于用户输入,并且可以将数据毫无问题地保存到变量/数据库中。但是,如果我想向用户显示相同的值,它将不显示任何内容,甚至不显示“ 0”。

所以我的问题是:如何将值从“ float”中取出,将其转换为“ string”,然后将其应用于Textbox.Text,以便显示值?

例如:如果我在“文本框”中将值设置为“ 5”,它将保存并显示“ 5”,但是如果我输入“ 5.5”或“ 5,5”,则无论哪种方式,它都不会显示,我需要它显示“ 5.5”。

有任何想法吗?

PS:应该代表货币价值。如果可能的话,我也希望有一个不需要Javascript的解决方案。

Kar*_*EDV 3

浮点数 5.5 并不完全是 5.5 的实际值(请参阅.Net 浮点参考

我强烈建议您永远不要使用浮点数来表示货币值!最佳实践是对这些内容使用十进制类型。

也就是说,如果您确实想使用浮点数,那么当您从数据库读取值时,请执行以下操作:

TextBox1.Text = ((decimal)myNum.ToString( "0.##" )).Tostring()
Run Code Online (Sandbox Code Playgroud)

使用此解决方案,您可以根据需要保留步进“0.01”

PS 正如蒂亚戈指出的那样,您的文化和浮点分隔符之间可能不匹配。小数需要点,但您的数字可能有逗号。在这种情况下转换如下:

decimal.Parse("18,285", new NumberFormatInfo() { NumberDecimalSeparator = "," })
Run Code Online (Sandbox Code Playgroud)

从这个问题得到的