为什么 1 000 000 不等于 1000000.toString("N", new CultureInfo("fr-FR"))
Why is 1 000 000 not equal to 1000000.toString("N", new CultureInfo("fr-FR"))
我写了一些关于字符串转换和货币的单元测试。
我正在测试字符串是否以我期望的格式返回,给定 CultureInfo 方法已通过。
public string GetOverspendAmount(double _amount, CultureInfo cultureInfo)
{
return amount.ToString("N", cultureInfo);
}
我正在使用以下调用对这段代码进行单元测试 -
double amount = 1000000;
CultureInfo ci = new CultureInfo("fr-FR", false);
GetOverspendAmount(amount, ci).Should().Be("1 000 000");
但测试失败。预期和实际看起来相同,但当放入 ascii 转换器时,显示以下结果
Expected - 1 000 000
49 32 48 48 48 32 48 48 48
Actual - 1 000 000
049 194 160 048 048 048 194 160 048 048 048
它们不是普通空间,但我想知道它们是什么,为什么它们不只是普通空间?
space 是一个不间断的 space (UTF-8 194 160) 而不是常规的 space (UTF-8 32)。
https://utf8-chartable.de/unicode-utf8-table.pl?utf8=dec
不间断 space 对 HTML 等格式产生影响,因为它不允许在其后自动换行。它还不允许多个 space 折叠成一个。
我写了一些关于字符串转换和货币的单元测试。
我正在测试字符串是否以我期望的格式返回,给定 CultureInfo 方法已通过。
public string GetOverspendAmount(double _amount, CultureInfo cultureInfo)
{
return amount.ToString("N", cultureInfo);
}
我正在使用以下调用对这段代码进行单元测试 -
double amount = 1000000;
CultureInfo ci = new CultureInfo("fr-FR", false);
GetOverspendAmount(amount, ci).Should().Be("1 000 000");
但测试失败。预期和实际看起来相同,但当放入 ascii 转换器时,显示以下结果
Expected - 1 000 000
49 32 48 48 48 32 48 48 48
Actual - 1 000 000
049 194 160 048 048 048 194 160 048 048 048
它们不是普通空间,但我想知道它们是什么,为什么它们不只是普通空间?
space 是一个不间断的 space (UTF-8 194 160) 而不是常规的 space (UTF-8 32)。
https://utf8-chartable.de/unicode-utf8-table.pl?utf8=dec
不间断 space 对 HTML 等格式产生影响,因为它不允许在其后自动换行。它还不允许多个 space 折叠成一个。