我遇到了C#(VS2010)中的类型转换问题。如何将十进制或浮点值中的“,”替换为“。”?
我需要在我的数据库中插入一些行,但在C十进制数类型#像这样:1,34.
在SQL字符串,它看起来:“-------- 1,34
----- ----“,但我需要这个字符串看起来像:”-------- 1.34
-------“。
如何将" , "
更换为" . ".
谢谢。
我遇到了C#(VS2010)中的类型转换问题。如何将十进制或浮点值中的“,”替换为“。”?
我需要在我的数据库中插入一些行,但在C十进制数类型#像这样:1,34.
在SQL字符串,它看起来:“-------- 1,34
----- ----“,但我需要这个字符串看起来像:”-------- 1.34
-------“。
如何将" , "
更换为" . ".
谢谢。
如果你只想用“。”将数据插入数据库put字符串。 (替换(',','。'))
这不依赖于C#,而是依赖于您正在使用的默认文化。 您需要使用您选择的文化来设置小数点的格式,请参阅this寻求帮助
只需在将数字格式化为字符串时指定备用文化。
double value = 3.14D;
string formatted = String.Format(CultureInfo.InvariantCulture, "{0:F2}", value);
为了我不建议使用stringformat来创建sql命令。 –
@FelicePollano - 我同意,我只是回答他的具体查询。 –
使用命令与参数生成DB命令,你会不会在所有有这样的问题,而且它是推荐的方式。见this to have an example。你几乎不应该自己设置sql字符串的格式,因为你总是会遇到问题,如果你把你的sw移到另一个db文化中呢?潜在的查询注入怎么样,等等。
您可以设置NumberFormatInfo.NumberDecimalSeparator
任何CultureInfo的使用:
// Gets a NumberFormatInfo associated with the en-US culture.
NumberFormatInfo nfi = new CultureInfo("en-US", false).NumberFormat;
// Displays a value with the default separator (".").
Int64 myInt = 123456789;
Console.WriteLine(myInt.ToString("N", nfi));
// Displays the same value with a blank as the separator.
nfi.NumberDecimalSeparator = " ";
Console.WriteLine(myInt.ToString("N", nfi));
这是从MSDN
为例如果你在你的数据库小数,你必须在你的代码十进制你不需要任何转换,你都准备好了。
但是我怕你觉得这是一个小数
“3.14”
它不是。它是一个保存十进制表示的字符串,IOW是可视化的人类数字。
如果您需要转换,它是一种符号,您可以将字符串推送到数字,或将数字推送到字符串。第二种意思是你有一个破碎的设计,首先你解析一些外部来源的混乱输入 - 在这种情况下,我的首选是创建一个文化对象,然后根据混乱的来源设置其功能,例如:
culture.NumberFormat.NumberDecimalSeparator = ".";
然后在转换数据时使用此对象。
查看此前的答案。
Stack Overflow Globalised Number Formatting
但是你不应该这样做只是在数据库中得到一个数字。 如果使用参数化查询
在数据库中,数字只是一个小数。如果我在英国写一个应用程序,当它转换为字符串显示时,我看到9,999.999你写了一个你看到9.999,999。因此,看看你为什么需要混合文化,看看你是否可以消除这种需求,非常罕见,你实际上需要这样的事情,甚至不需要这样的事情。因为它被设计成可以摆脱以前窗户化身造成的所有问题。
有趣的是,如果有一个文字字符串插入含有','那么它呢? –
如果数字是'123,456,789.00' – username
怎么办?不明白为什么OP将该答案标记为解决方案,因为它与“全球化”标签没有任何共同之处。 – mj82