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# [重复]