gpt4 book ai didi

C# Double Parsing 在不应该的时候给出错误

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

我正在处理一个 C# 项目。我正在解析 datagridview 的值并对其进行格式化,但问题是除了 1 之外所有值都被完美地解析了。这太有趣了,这是我第一次遇到这种情况。

for (int i=0; i<dgKisiFatura.Rows.Count-1; i++)
for (int j = 3; j < dgKisiFatura.Columns.Count; j++)
{
dgKisiFatura.Rows[i].Cells[j].Value = string.Format("{0:n2}",
Math.Round(double.Parse(dgKisiFatura.Rows[i].Cells[j].Value.ToString()), 2));

dgKisiFatura.Columns[j].DefaultCellStyle.Font = fontSayi;
}

问题是它正在解析下面的所有值,除了一个 240000

这些正是我设置到 DataGridView 的字符串。

dgKisiFatura.Rows[0].Cells[4].Value =   "4320000";
dgKisiFatura.Rows[1].Cells[4].Value = "1680000";
dgKisiFatura.Rows[2].Cells[4].Value = "600000";
dgKisiFatura.Rows[3].Cells[4].Value = "540000";
dgKisiFatura.Rows[4].Cells[4].Value = "600000";
dgKisiFatura.Rows[5].Cells[4].Value = "1800000";
dgKisiFatura.Rows[6].Cells[4].Value = "240000‬"; // <- Here is the problem
dgKisiFatura.Rows[7].Cells[4].Value = "1800000";
dgKisiFatura.Rows[8].Cells[4].Value = "480000";
dgKisiFatura.Rows[9].Cells[4].Value = "1440000";
dgKisiFatura.Rows[10].Cells[4].Value = "360000";
dgKisiFatura.Rows[11].Cells[4].Value = "900000";
dgKisiFatura.Rows[12].Cells[4].Value = "120000";
dgKisiFatura.Rows[13].Cells[4].Value = "2160000";
dgKisiFatura.Rows[14].Cells[4].Value = "900000";
dgKisiFatura.Rows[15].Cells[4].Value = "17940000";

我将所有这些都放在 try 和 catch block 中,除了 240000 之外,它解析得很好。

This is the MessageBox that shows where the error happened

如果我使用 try/catch 并保持完美运行,它就会传递该值。我需要你的帮助。我错过了什么吗?

最佳答案

与 TheGeneral 的回答中的想法相同,但表示形式略有不同(使用 string 时,字符 通常比字节更方便)。让我们看一下字符串的转储:

  using System.Linq;

...

string data = "240000‬"; // Copy + Paste from the question

string dump = string.Join(Environment.NewLine,
data.Select(c => $"'{c}' (\\u{(int)c:x4})"));

Console.Write(dump);

结果:

'2' (\u0032)
'4' (\u0034)
'0' (\u0030)
'0' (\u0030)
'0' (\u0030)
'0' (\u0030)
'‬' (\u202c) <- the very reason of misbehavior

正如我们所见,data不可见 unicode 字符\u202c 结尾(POP DIRECTIONAL FORMATTING),这就是为什么 data 不能被解析为 double

关于C# Double Parsing 在不应该的时候给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57107030/

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