从字符串转换数字时的双精度

时间:2012-12-14 15:10:14

标签: c# string casting sql-server-2008-r2 double

我从数据库中获取数字。有些存储在数据库中double,有些存储为string

我想要做的是计算decimal number个字符所以:345.34938会给我5的结果。

正如我所说,我的一些double来自数据库double,有些来自string。我想知道casting string号到double时是否会出现任何问题,因此在尝试count小数时会给我错误的结果。

我想我应该没事,但我担心在某些情况下,当他们从string投出时,我最终会收到错误的双号(考虑拥有1.9999999而不是2.0,类似于那)...

将我的号码从string投射到double会在我的应用程序中存储为double时会给我带来奇怪的结果,是否存在任何风险?我在那附近活泼吗?

1 个答案:

答案 0 :(得分:1)

考虑使用string方法将System.Decimal表示转换为decimal.Parse。因为对于decimal,数字的值与其字符串表示之间的对应关系要好得多。此外,它可以处理更多的数字。

System.Decimal会保留字符串中的尾随零(如"2.7500"),而System.Double则不会。

但如果您的字符串总共不超过15位数(包括小数点前的数字.),那么使用double的方法可能会有效。但是代表的确切数字几乎​​总是与“你看到的”double不同,因此小数字的数量应理解为double.ToString()显示的内容......

也许直接使用字符串更容易,比如

int numberOfDecimals = myString.Length - (myString.IndexOf('.') + 1);