将浮点数显示为文本框类型“数字”
关于将文本框字符串转换为浮点值或允许类型=“数字”的文本框允许小数点有很多问题,但是,我似乎无法找到与显示浮点值相关的任何内容一个文本框,其类型设置为“数字”。
到目前为止,我所拥有的是一个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位数到小数点右边可能是无意的)。