gpt4 book ai didi

c# - 如何为计算器完成数字分组。例如,数字分组的方式与 Windows 7 计算器相同

转载 作者:太空宇宙 更新时间:2023-11-03 14:20:19 25 4
gpt4 key购买 nike

我正在为 Windows Phone 7 制作一个计算器应用程序,但我正在为数字分组而苦苦挣扎。这是代码:

myNumber = myNumber.Replace(",", string.Empty);

            int dot = myNumber.IndexOf("0.");

strNumberWithoutDecimals = myNumber.Substring(0, (dot == -1 ? myNumber.Length : dot));
strNumberDecimals = (dot == -1 ? "" : myNumber.Substring(dot));

try
{
strNumberWithoutDecimals = Convert.ToDouble(strNumberWithoutDecimals).ToString("#,##0.000000000");
}
catch (Exception)
{
//Ignore ... for now.
}

total = strNumberWithoutDecimals + strNumberDecimals; return total;

问题是当用户输入 0.323 并且数字分组打开时,数字不能为负数。它不会工作。 0.323 不能变成 -0.323,我不知道为什么。任何帮助将不胜感激。提前致谢。

最佳答案

您应该熟悉 C# 字符串格式化支持,包括输入和输出。

http://blog.stevex.net/string-formatting-in-csharp/

Double.TryParse() 与包含样式信息的重载之一一起使用。

例如ojit_代码

(对于 Integer、Decimal、Float 等应该有类似的方法,具体取决于您需要的精度)。

这种方法还会使您的应用程序更加 I18N 友好,因为不同的文化采用不同的数字分组约定(例如,许多欧洲文化使用 1.234.567,89 来表示 1,234,567.89)

TryParse(string s, NumberStyles style, IFormatProvider provider, 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);

请注意,TryParse(string s, out double result) 是其他 NumberStyles(例如 NumberStyles.FloatNumberStyles.AllowLeadingSign 等)的组合。

无需手动删除逗号等!

有关详细信息,请参阅 MSDN

关于c# - 如何为计算器完成数字分组。例如,数字分组的方式与 Windows 7 计算器相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5615014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com