2011-11-26 17 views
0

我遇到了C#(VS2010)中的类型转换问题。如何将十进制或浮点值中的“,”替换为“。”?

我需要在我的数据库中插入一些行,但在C十进制数类型#像这样:1,34.

在SQL字符串,它看起来:“-------- 1,34 ----- ----“,但我需要这个字符串看起来像:”-------- 1.34 -------“。

如何将" , "更换为" . ". 谢谢。

回答

-6

如果你只想用“。”将数据插入数据库put字符串。 (替换(',','。'))

+1

有趣的是,如果有一个文字字符串插入含有','那么它呢? –

+5

如果数字是'123,456,789.00' – username

+1

怎么办?不明白为什么OP将该答案标记为解决方案,因为它与“全球化”标签没有任何共同之处。 – mj82

0

这不依赖于C#,而是依赖于您正在使用的默认文化。 您需要使用您选择的文化来设置小数点的格式,请参阅this寻求帮助

2

只需在将数字格式化为字符串时指定备用文化。

double value = 3.14D; 

string formatted = String.Format(CultureInfo.InvariantCulture, "{0:F2}", value); 
+0

为了我不建议使用stringformat来创建sql命令。 –

+1

@FelicePollano - 我同意,我只是回答他的具体查询。 –

18

使用命令参数生成DB命令,你会不会在所有有这样的问题,而且它是推荐的方式。见this to have an example。你几乎不应该自己设置sql字符串的格式,因为你总是会遇到问题,如果你把你的sw移到另一个db文化中呢?潜在的查询注入怎么样,等等。

0

您可以设置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

为例
2

如果你在你的数据库小数,你必须在你的代码十进制你不需要任何转换,你都准备好了。

但是我怕你觉得这是一个小数

“3.14”

它不是。它是一个保存十进制表示的字符串,IOW是可视化的人类数字。

如果您需要转换,它是一种符号,您可以将字符串推送到数字,或将数字推送到字符串。第二种意思是你有一个破碎的设计,首先你解析一些外部来源的混乱输入 - 在这种情况下,我的首选是创建一个文化对象,然后根据混乱的来源设置其功能,例如:

culture.NumberFormat.NumberDecimalSeparator = "."; 

然后在转换数据时使用此对象。

0

查看此前的答案。

Stack Overflow Globalised Number Formatting

但是你不应该这样做只是在数据库中得到一个数字。 如果使用参数化查询

在数据库中,数字只是一个小数。如果我在英国写一个应用程序,当它转换为字符串显示时,我看到9,999.999你写了一个你看到9.999,999。因此,看看你为什么需要混合文化,看看你是否可以消除这种需求,非常罕见,你实际上需要这样的事情,甚至不需要这样的事情。因为它被设计成可以摆脱以前窗户化身造成的所有问题。

相关问题