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

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

到目前为止,我所拥有的是一个text = type =“number”和step =“0.01”。 它的最小值为“0”。 它显示如下:

 

它适用于用户输入并将数据保存到可变数据库/数据库而没有任何问题。 但是,如果我想将相同的值显示给用户,则它不显示任何内容,甚至不显示“0”。

所以我的问题是:如何将值格式化为“浮点数”,将其转换为“字符串”,并将其应用于Textbox.Text,以便显示值?

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

有任何想法吗?

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

浮点数5.5不是5.5的实际值(参见.Net Float Reference )

我强烈建议你永远不要使用花车作为货币价值! 对于这些事情,最好使用小数类型。

也就是说,如果你真的想使用浮点数,当你从数据库中读取值时,请执行以下操作:

 TextBox1.Text = ((decimal)myNum.ToString( "0.##" )).Tostring() 

使用此解决方案,您可以在“0.01”时离开步进

PS正如Tiago所指出,您的文化和浮点分离器之间可能存在不匹配。 小数字期望点,但也许你的号码有一个逗号。 在这种情况下转换为:

 decimal.Parse("18,285", new NumberFormatInfo() { NumberDecimalSeparator = "," }) 

从这个问题得到它

any值设置为步骤属性。

   

您可以使用Convert.ToSingle()float.Parse将字符串转换为float

 var value = Convert.ToSingle(TextBox1.Text, CultureInfo.InvariantCulture); //Or var value1 = float.Parse(TextBox1.Text, CultureInfo.InvariantCulture); 

并使用实例方法的ToString("N")将float转换为string。

 var str = floatNum.ToString("N"); // or N2 (2 digit decimal) 

好吧,经过对Textbox类型号的一些研究,我发现HTML5输入类型=“数字”是一团糟。 我知道这对某些人来说并不是很有趣,但我知道一两个程序员会遇到同样的问题。

@KarmaEDV对此问题有最佳答案,因为十进制类型值是处理货币的正确方法。 但是,@ AVD也是正确的,如果你将它设置为“any”,它将接受任何大小的十进制数值。

同时,它导致了另一个问题。 当您使用类型编号设置输入时,该框将仅接收数字或DOT(点)的值。 如果您不使用英文符号,可以使用“,”(逗号)作为小数点。 疯狂的事情发生在这里,盒子接受“,”,当值保存时,它仍然是一个有效的十进制值,但是当你转换值(用“,”)时,它将创建一个字符串“ “。 例如:值5,5字面意思是字符串“5,5”。

作为那些不接受“,”的盒子,它不会呈现它。 解?
的ToString()更换。( ‘ ”。’); 就如此容易。

想要更多? 它仍然显示“5,5”与“,”(逗号)……这就是它导致麻烦的原因……

感谢大家的帮助。

您可以使用以下内容手动检入代码隐藏:

 TextBox1.Text.ToString(CultureInfo.InvariantCulture); 

你也可以使用

 float.TryParse( TextBox1.Text) 

要查看该值是否为浮点数,或者您是否可以将其视为普通字符串。

可能的最佳做法是忘记Text =“Number”(由于上面指定的问题)并使用Decimal.TryParse()validation用户输入。 对于美国货币,我还建议确保小数点后不超过两位数,并且(更好)确保小数点右边有两位数字以捕捉可能的输入错误(如果只有1位数到小数点右边可能是无意的)。