首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分析字符串以使用逗号和point进行双精度

分析字符串以使用逗号和point进行双精度
EN

Stack Overflow用户
提问于 2012-07-19 20:03:21
回答 13查看 195.4K关注 0票数 82

我正在尝试编写一个函数,它基本上将字符串数组转换为字符串数组,其中数组中的所有双精度数都四舍五入为我设置的小数位数。数组中也可以有字符串,这些字符串根本不是双精度值。

代码语言:javascript
运行
复制
string[,] values = new string[1, 3];

values[0, 0] = "hello";
values[0, 1] = "0.123";
values[0, 2] = "0,123";

int decimalPlaces = 2;

double tmp;
string format = "F" + decimalPlaces.ToString();
IFormatProvider provider = CultureInfo.InvariantCulture;
for (int i = 0; i < values.GetLength(0); i++)
{
    for (int j = 0; j < values.GetLength(1); j++)
    {
        if (double.TryParse(values[i, j], out tmp))
        {
            values[i, j] = tmp.ToString(format, provider);
        }
    }
}

Console.ReadLine();

结果必须是:"hello","0.12","0.12“,但它是"hello”,"123.00","0.12“将以错误的方式处理逗号。有没有人有简单有效的解决方案?

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2012-07-19 20:13:02

您希望像对待逗号(,)一样对待点(.)。因此,请替换

代码语言:javascript
运行
复制
if (double.TryParse(values[i, j], out tmp))

使用

代码语言:javascript
运行
复制
if (double.TryParse(values[i, j].Replace('.', ','), out tmp))
票数 30
EN

Stack Overflow用户

发布于 2013-10-30 17:38:35

来治疗这两种病,还有。作为小数点,您不仅必须将一个替换为另一个,而且还必须确保所使用的区域性解析将其解释为小数点。

代码语言:javascript
运行
复制
text = text.Replace(',', '.');
return double.TryParse(text, NumberStyles.Any, CultureInfo.InvariantCulture, out value);
票数 169
EN

Stack Overflow用户

发布于 2015-02-24 17:32:45

您不需要替换逗号和点..

我也遇到过同样的问题。原因很简单,转换文化在解释逗号或点时起着很大的作用。我使用的是德国文化,用逗号来区分分数,和其他地方一样,用点来区分分数。

在这里,我做了一个完整的例子来说明不同之处。

代码语言:javascript
运行
复制
string[] doubleStrings = {"hello", "0.123", "0,123"};
double localCultreResult;
foreach (var doubleString in doubleStrings)
{
    double.TryParse(doubleString, NumberStyles.Any, CultureInfo.CurrentCulture, out localCultreResult);
    Console.WriteLine(string.Format("Local culture results for the parsing of {0} is {1}", doubleString, localCultreResult));
}

double invariantCultureResult;
foreach (var doubleString in doubleStrings)
{
    double.TryParse(doubleString, NumberStyles.Any, CultureInfo.InvariantCulture, out invariantCultureResult);
    Console.WriteLine(string.Format("Invariant culture results for the parsing of {0} is {1}", doubleString, invariantCultureResult));
}

结果如下:

玩玩文化,你会得到你想要的结果。

票数 52
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11560465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档