c#十进制toString()用逗号(,)转换

Posted

技术标签:

【中文标题】c#十进制toString()用逗号(,)转换【英文标题】:c# decimal toString() conversion with comma(,) 【发布时间】:2015-06-17 10:38:08 【问题描述】:

c#decimal.toString()转换问题

示例:我有一个十进制值(.1) 当我使用 toString() 将十进制转换为字符串时,它返回 (0,10)。它返回 ,(COMMA) 而不是 .(DOT)。

【问题讨论】:

检查当前的区域设置 - 您需要选择一个使用 .而不是,-与这个问题相反:***.com/questions/1559185/… 输出取决于你CurrentCulture, ToString(CultureInfo) Set up dot instead of comma in numeric values的可能重复 【参考方案1】:

我相信这与您的操作系统设置的文化/地区有关。您可以通过在 .ToString() 方法中添加格式重载来修复/更改解析字符串的方式。

例如

decimalValue.ToString(CultureInfo.InvariantCulture);

【讨论】:

@sivaprakash 请随意勾选我的答案是否正确 :) 将答案标记为正确需要 15reputation。我只有 7 个 嘿,@sivaprakash 只是在提醒您,您有足够的声誉可以将答案勾选为正确【参考方案2】:

您必须定义格式,这取决于您的本地设置或 定义格式,使用类似这样的东西

decimal.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("en-us"));

干杯

【讨论】:

【参考方案3】:

要发生这种情况,线程的当前文化必须是使用逗号而不是点分隔符的文化。

您可以在每个 ToString 的基础上使用采用文化的 ToString 的重载来更改此设置:

var withDot = myVal.ToString(CultureInfo.InvariantCulture);

或者,您可以通过在对ToString() 执行任何调用之前设置线程的文化来更改整个线程:

var ci = CultureInfo.InvariantCulture;
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;

var first = myVal.ToString();
var second = anotherVal.ToString();

【讨论】:

【参考方案4】:

逗号(,)

试试这个:

decimalValue.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("tr-tr"))

【讨论】:

【参考方案5】:

那么您当前的culture 的NumberDecimalSeparator, 而不是.

如果不需要,您可以使用 CultureInfo.InvariantCulture 强制添加点:

decimal num = 0.1m;
string numWithDotAsSeparator = num.ToString(CultureInfo.InvariantCulture);

NumberFormatInfo.InvariantInfo

string numWithDotAsSeparator = num.ToString(NumberFormatInfo.InvariantInfo)

【讨论】:

以上是关于c#十进制toString()用逗号(,)转换的主要内容,如果未能解决你的问题,请参考以下文章

C# 怎么把十进制数字转换成字符

将十进制转换为小数点后两个零的字符串,和逗号? C# [重复]

C# 十进制和十六进制转换

在c#中将十进制值转换为两个精度[重复]

使用 ToString() 格式化十进制值以将逗号作为千位分隔符,其中小数位数未知

C#通过分隔数字将十进制转换为字符串[重复]