我正在开发的一个网页应用程序(由另一名开发者编写)存在一个十进制变量,在小数点后面会丢失两个零。但如果最后两位包含大于0或组合的数字,则不会丢失尾随2位数字。这个值来自一个文本文件。
例如,文本值为:
例如,文本值为:
261.00
, 十进制变量(TotalDue)是:261
。在调试时,当我将鼠标悬停在“TotalDue”上时,该值显示为261,并且当我展开调试器时,它读取“261M”:decimal TotalDue = Convert.ToDecimal(InputRow.Substring(260, 12));
我已经尝试将它作为一个字符串输入(但最初仍然显示为“261”,而不是261.00),然后按照以下各种方式进行转换。 什么都没用!
string TotalDue = InputRow.Substring(260, 12);
strTotalDue = String.Format("{0:F2}", TotalDue);
strTotalDue = String.Format("{0:N2}", TotalDue);
strTotalDue = String.Format(TotalDue, "0.00");
strTotalDue = TotalDue.ToString("G29");
strTotalDue = String.Format("{0:0.00}", TotalDue);
strTotalDue = TotalDue.ToString("N2");//used this one with decimal data type
我错过了什么?文本文件的数据起源是否很重要?它起源于一个Access数据库。
更新:今天(12/1/15)我意识到我从未标记答案,因为我最终放弃了原始代码并在C#.net中重写了它。我将标记Cole Campbell的答案为正确答案,因为他的话语(“以一种向其提供有关输入精度的足够数据来构造十进制数”)促使我想出了解决方案,即操纵传入的数据。我是用一个方法来做到这一点的——下面只显示了重要部分(AmtDue)。提醒一下,传入的数据格式为“261.00”(例如,AmtDue = 261.00):
string AmtDue = Convert.ToString(AmountDue).Replace(".", "");
string finalstring = ("0000000000" + AmtDue).Substring(AmtDue.Length);