相关疑难解决方法(0)

使用逗号和点将字符串解析为double

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

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();
Run Code Online (Sandbox Code Playgroud)

结果必须是:"你好","0.12","0.12",但它是"你好","123.00","0.12"将以错误的方式对待逗号.有没有人有一个简单而有效的解决方案?

c#

55
推荐指数
6
解决办法
14万
查看次数

默认文化

我使用.NET4

我使用 en-US 语言环境,并且希望我的应用程序仅以这种方式工作。

不过,我的一些软件客户来自小数点用“,”表示的国家(例如挪威)。

因此,下一行为我的挪威客户抛出异常:

double a = double.Parse("1.5");
Run Code Online (Sandbox Code Playgroud)

我读过我可以更改 CurrentCulture,如下所示:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Run Code Online (Sandbox Code Playgroud)

问题是我必须为每个线程单独执行此操作。此外,我不完全确定我将在哪里隐式解析双精度,所以我必须在每个线程创建时执行此操作......

我读到有一个针对 .NET 4.5 的解决方案,通过更改DefaultThreadCurrentCulture.

有没有人想到一个通用的解决方案,无需升级我的 .NET 框架版本?

c# culture cultureinfo .net-4.0 internationalization

5
推荐指数
1
解决办法
1125
查看次数

Convert.ToDouble("1.3")返回13

这里发生了什么?

Convert.ToDouble("1.3")
Run Code Online (Sandbox Code Playgroud)

我有一个值为"1.3"的字符串.当我转换为double时,它返回13.我想返回1.3.

.net c# casting transformation

4
推荐指数
1
解决办法
310
查看次数

字符串"0.080"加倍使80.00

我在c#中有这个问题,我想将一个字符串转换为double.

textBoxKostOnderhoud.Text = "0.08";

kost.OnderhoudKost = double.Parse(textBoxKostOnderhoud.Text);
Run Code Online (Sandbox Code Playgroud)

这使我的数据库中的80.00,我不知道为什么.这个问题有什么解决方案吗?

这是我如何将我的值添加到数据库(mysql)

public bool insert(Kost kost)
{
    string query = "INSERT INTO kost (wagenId, onderhoudKost, tolKost, bedrijfsVerzekering, autoVerzekering, ladingVerzekering, wegenBelasting, eurovignet, accountantKost, telefoonKost, documentenEnVergunningen, onvoorzien, overige, andere) VALUES('" + kost.WagenId + "', '" + kost.OnderhoudKost + "', '" + kost.TolKost + "', '" + kost.BedrijfsVerzekering + "', '" + kost.AutoVerzekering + "', '" + kost.LadingVerzekering + "', '" + kost.WegenBelasting + "', '" + kost.Eurovignet + "', '" + kost.AccountantKost + "', '" …
Run Code Online (Sandbox Code Playgroud)

c# mysql string double parsing

3
推荐指数
1
解决办法
598
查看次数

编译器错误消息:CS0029:无法将类型“int”隐式转换为“string”

我需要将表数据库输入的字符串转换为 C# .NET 4 中的整数值,并尝试了受此链接启发的代码:

    int i;
    string Entry_Level = Convert.ToInt32("2,45");
    i = Convert.ToInt32(Entry_Level); 
Run Code Online (Sandbox Code Playgroud)

但我有这个错误:

编译器错误消息:CS0029:无法将类型“int”隐式转换为“string”

编辑

解决方法:

    decimal i;
    string Entry_Level = "2,45";
    i = Convert.ToDecimal(Entry_Level);

    Response.Write(i.ToString());
    Response.End();
Run Code Online (Sandbox Code Playgroud)

输出结果是 2,45,非常感谢!

c#

3
推荐指数
1
解决办法
12万
查看次数

C#在字符串中将字符串转换为double

在我的语言环境中,小数点分隔符是','.

但是,我仍然想编写一个C#应用程序,该应用程序使用使用'.'的数字.作为小数分隔符.

        string b = "0,5";
        double db = double.Parse(b); // gives 0.5

        string a = "0.5";
        double da = double.Parse(a); // gives 5, however i would like to get 0.5
Run Code Online (Sandbox Code Playgroud)

c# string-conversion

2
推荐指数
1
解决办法
2万
查看次数

C#FormatException double.parse(),为什么不是0.89解析?

class Program
{
    static void Main(string[] args)
    {
        string str = "0.898";
        double dbl = Double.Parse(str);

        dbl++;

        Console.WriteLine(dbl);
        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要工作的所有其他格式,如"100"工作.但是只要我添加一个"点",我就会FormatException出错.

c# string double parsing formatexception

2
推荐指数
1
解决办法
191
查看次数

具有负浮动的字符串浮动?

这基本上是我的代码:

string text = "-0.05537987";

float value = Single.Parse(text);
Run Code Online (Sandbox Code Playgroud)

当我尝试像我在这里解析一个负数时,我得到"输入字符串格式不正确".

c#

2
推荐指数
1
解决办法
2016
查看次数

LINQ to Entities 无法识别方法“Double Parse(System.String)”无法转换为存储表达式 C# asp.net

我尝试按编号订购部门,但由于部门编号作为字符串存储在数据库中,我不能只使用按编号订购。我尝试将其解析为浮点数,但没有奏效。然后我尝试将其解析为 Double。那也行不通。有什么建议?以下是我的代码。

using (var db = new Context())
{
    var datasource = (from x in db.Departments 
                      orderby double.Parse(x.DepartmentNumber) 
                      select x).ToList();
    lvData.DataSource = datasource;
    lvData.DataBind();
}
Run Code Online (Sandbox Code Playgroud)

感谢您的回答,我做了以下操作,但结果并不完全正确。

 var datasource = (from x in db.Departments orderby x.DepartmentNumber select x).ToList().OrderBy(Department => float.Parse(Department.DepartmentNumber));
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

c# sql linq asp.net

1
推荐指数
1
解决办法
1804
查看次数

C# - 字符串到单个转换错误

我正在编写一个程序,将数据从微控制器获取到 PC。数据为浮点格式。我尝试使用将字符串转换为浮点型Convert.ToSingle(string),但转换结果错误:

  1. “0.11”转换为 11,有时为 12。
  2. “0.10”转换为 10 等

正如您所看到的,它丢失了前导 0. ,这是出乎意料的。怎么会发生这种事?

.net c# floating-point

0
推荐指数
1
解决办法
1959
查看次数

运算符 '&gt;=' 不能应用于类型为 'string' 和 'int' 的操作数

我对 C# 很陌生,一直在寻找有关使用 Int32.Parse、Int32.TryParse、Convert.Int32 等将字符串转换为整数的解决方案。但是我找不到合适的解决方案来接近我想要的。我在这里找到了一个类似的帖子:运算符 '>=' 不能应用于 'string' 和 'string' 类型的操作数,但仍然找不到正确的解决方案。

这是我正在尝试编码的内容的简要说明。

  1. 打开名为“compare.xls”的 Excel 文件,读取文件并写入名为“tline.txt”的文本文件

  2. 然后打开文本文件“tline.txt”,逐行读取文本,只写入带有条件语句的名为“mkmatlab.txt”的文本文件。条件语句:如果从该行读取的数字为 25 <= x <= 50,则将其写入“mkmatlab.txt”(仅当它是整数时才写入文件)。

Excel文件中的内容的一个想法:

A1..|  B1....... |  C1........ | D1........| E1........|      
0.1 |10.2000    |53.6000    |52.7894    |24.9608                                        
0.2 |26.8209    |55.0851    |56.4726    |35.8431                                    
0.3 |10.1009    |56.0314    |56.5013    |27.8922                                    
0.4 |17.7008    |60.0054    |59.7650    |37.8018    
Run Code Online (Sandbox Code Playgroud)

*符号 .. 和 | 只是在这里充当间距,Excel 文件或文本文件不包含任何这些符号。

说明:第一行包含 A1 到 E1。对于列 A1,包含 0.1 到 0.4,对于列 B1 到 E1,依此类推。

我在线上有评论

if (words1[t] >= 25 && words1[t] <= 50)
Run Code Online (Sandbox Code Playgroud)

我需要帮助的地方。

StreamReader fidin …
Run Code Online (Sandbox Code Playgroud)

c# arrays string int streamreader

0
推荐指数
1
解决办法
641
查看次数