c# - 用点解析双精度为逗号
问题描述
我正在与双打合作。在荷兰,我们使用 51,3 而不是 51.3。我确实写了一段使用点而不是逗号的代码。但是之前编写的代码的结果返回了一个双倍的英文方式,带有一个点。我遇到了一些奇怪的错误。
这是我所拥有的:
var calResult = 15.2d;
var calResultString = calResult.ToString(CultureInfo.GetCultureInfo("nl-NL"));
var result = double.Parse(calResultString);
- calResult == "15.2" -> 符合预期
- calResultString == "15,2" -> 符合预期
- 结果 == "152" -> 在这里我期待一个逗号。
A 也确实尝试在 double.Parse 中添加文化信息。这导致了“15.2”。
TLDR:我需要将英语/美式双人转换为荷兰语(或类似规则)的双人。
提前致谢!:)
附言
我希望这不是一个重复的问题,但没有发现任何具体的问题。
解决方案
您可能应该在"nl-NL"
与荷兰文化合作时提供
var calResult = 15.2d;
var calResultString = calResult.ToString(CultureInfo.GetCultureInfo("nl-NL"));
// We should parse with "nl-NL", not with CurrentCulture which seems to be "en-US"
var result = double.Parse(calResultString, CultureInfo.GetCultureInfo("nl-NL"));
或指定CurrentCulture
(默认文化)
CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("nl-NL");
var calResult = 15.2d;
// now CultureInfo.GetCultureInfo("nl-NL") is redundant
var calResultString = calResult.ToString();
var result = double.Parse(calResultString);
最后,如果您有 astring
代表文化中的某个浮点值,en-US
并且您想要相同的值但格式为 a :string
nl-NL
string source = "123.456";
string result = double
.Parse(source, CultureInfo.GetCultureInfo("en-US"))
.ToString(CultureInfo.GetCultureInfo("nl-NL"));
推荐阅读
- php - Symfony 5 如何在具有多对多关系的更新中自动发送当前用户
- python - 设置 QToolTip 的不透明度,这样底层文本就不会溢出
- python - 使用 % 运算符检查迭代次数
- python-3.x - pygame:移动图像时,会留下痕迹
- python - 在 Python 中迭代和比较未知量的输入
- java - Flow API 中的 subscription.request(n) 如何在任何 n 值处执行背压?
- graphql - 盖茨比内容丰富的 graphql 图像
- c++ - 标头 ncurses.h 和 curses.h 之间的区别
- augmented-reality - Google Model Viewer AR-如何在没有海报或对象预览的情况下拥有“在 AR 中查看”按钮
- compiler-errors - 如何从 arrayList 中的不同对象调用方法?