C# 计算器的数字分组是如何完成的。例如,数字分组数字的方式与Windows7计算器相同
我正在为WindowsPhone7制作一个计算器应用程序,我正在努力进行数字分组。代码如下: myNumber=myNumber.Replace(“,”,string.Empty)C# 计算器的数字分组是如何完成的。例如,数字分组数字的方式与Windows7计算器相同,c#,silverlight,windows-phone-7,C#,Silverlight,Windows Phone 7,我正在为WindowsPhone7制作一个计算器应用程序,我正在努力进行数字分组。代码如下: myNumber=myNumber.Replace(“,”,string.Empty) 问题是当用户输入0.323并且数字分组打开时,数字不能为负数。这行不通。0.323不能变成-0.323,我不知道为什么。任何帮助都将不胜感激。提前感谢。您应该熟悉C#字符串格式的输入和输出支持 对包含样式信息的重载之一使用Double.TryParse() e、 g.TryParse(字符串s、数字样式、IForm
问题是当用户输入0.323并且数字分组打开时,数字不能为负数。这行不通。0.323不能变成-0.323,我不知道为什么。任何帮助都将不胜感激。提前感谢。您应该熟悉C#字符串格式的输入和输出支持 对包含样式信息的重载之一使用
Double.TryParse()
e、 g.TryParse(字符串s、数字样式、IFormatProvider提供程序、输出双结果)
(根据所需的精度,整数、小数、浮点等应有类似的方法)
这种方法还将使您的应用程序更加I18N友好,因为不同的文化对数字分组采用不同的约定(例如,许多欧洲文化使用1.234.567,89表示1234567.89)
TryParse(字符串s,out double result)
也应该可以工作,但对输入字符串的格式控制较少
它们在功能上是等效的:
double answer;
var result = Double.TryParse("123,456.78", NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.CurrentUICulture, out answer);
Console.WriteLine("result: {0} answer {1}", result, answer);
result = Double.TryParse("123,456.78", out answer);
Console.WriteLine("result: {0} answer {1}", result, answer);
请注意,NumberStyles.Float
是其他NumberStyles的组合(例如NumberStyles.AllowLeadingSign
,NumberStyles.AllowDecimalPoint
等)
无需手动删除逗号等
有关更多信息,请参阅。您能给我一个示例,说明如何在一些代码中使用Double.TryParse()吗?我更新了答案,并链接到相关MSDN页面,我相信底部有一个使用基于区域性的解析的详细示例。这是我得到的,但它没有做任何事情。string val2=inputPanelTextBox.Text;styles=NumberStyles.AllowDecimalPoint&NumberStyles.AllowThousands;culture=CultureInfo.CurrentCulture;if(Double.TryParse(val2,样式,区域性,out-answer))inputPanelTextBox.Text=”“+answer;那很有趣。。。但是,我注意到,对于我的
CultureInfo.CurrentCulture
(en-AU)值,Double.TryParse(string s,out Double result)
重载成功地将字符串123456.78
解析为123456.78。因此,这也应该适用于您,只是灵活性较差。在您的评论中,styles=NumberStyles.AllowDecimalPoint&NumberStyles.AllowThousands代码>应替换为style=NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands代码>。。。按位标志应该在一起!答案已更新为一个新示例。
double answer;
var result = Double.TryParse("123,456.78", NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.CurrentUICulture, out answer);
Console.WriteLine("result: {0} answer {1}", result, answer);
result = Double.TryParse("123,456.78", out answer);
Console.WriteLine("result: {0} answer {1}", result, answer);