Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算器的数字分组是如何完成的。例如,数字分组数字的方式与Windows7计算器相同_C#_Silverlight_Windows Phone 7 - Fatal编程技术网

C# 计算器的数字分组是如何完成的。例如,数字分组数字的方式与Windows7计算器相同

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

我正在为WindowsPhone7制作一个计算器应用程序,我正在努力进行数字分组。代码如下:

myNumber=myNumber.Replace(“,”,string.Empty)


问题是当用户输入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);