2015-10-05 69 views
0

我想将一个字符串值强制转换为ObjectParameter的十进制,并且小数必须是存储过程的精度中的两个位置。Decimal.Parse删除结尾零

它基本上是这样的:

string scScore = "1.50"; 

decimal scScore2 = Decimal.Parse(scScore); 

我希望scScore2等于1.50,但它总是为1.5结束了,无论我如何努力将其强制转换。

这段代码正是我想要的,当我在C#小提琴或VS中在新的控制台应用程序中运行它时。我尝试了几乎所有在本网站上发现的方法和其他方法来保持我的结尾为零,但它似乎总是迷失方向。

我也尝试在解析后添加尾随零,但是这也永远不会起作用。

还有什么可能会导致这?

编辑:

我在调试器中查看值被误导了。

产量的确如人们所预料的那样。

+1

@大卫这是一个鲜为人知的事实,但小数也有一个精度。看[这个例子](http://ideone.com/2KYNqo)。 –

+2

@LucasTrzesniewski:有趣。很高兴知道。 (看起来对于精确性很重要的科学计算很有用,无论价值如何。)在学习之后,我在这里找到了一些Google搜索:http://stackoverflow.com/questions/5324988/how-do-i-make-decimal-tryparse- keep-the-trailing-zeros不仅这使得这是一个重复的问题,但答案似乎很简单。 OP可能正在查看调试器中的值,而不是实际的输出。测试确认结果值*上的'.ToString()'输出'“1.50”'。 – David

+0

@大卫是的,我找到[this](http://stackoverflow.com/q/8705861/3764814)寻找一个愚蠢的,但你更适合这个问题。 –

回答

2

小数点没有尾随零。

如果您需要,仅用于显示。应用字符串的格式,如“0.00”。

+3

你错了。 [他们这样做](http://ideone.com/2KYNqo):) –

+0

嗯,那只是为了好玩。尝试'22m.Equals(22.00m)'。 – Gustav

+0

我没有说价值不相等;-) –