c# – 当需要显示时,十进制数据类型正在剥离尾随零
我正在研究的一个Web应用程序(另一个开发者编写它)有一个十进制变量,它在小数点后减去两个零.如果它们包含数字>它不会丢弃2位数字. 0或组合.该值来自文本文件.
示例文本值为: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); 解决方法
您的第一个示例是丢弃零的原因可能与您创建Decimal实例的方式有关. Decimal包含影响ToString()工作方式的缩放因子,并且根据Decimal的构造方式设置此缩放因子.
这段代码: var d1 = Decimal.Parse("261.00"); var d2 = new Decimal(261.00); var d3 = 261.00m; Console.WriteLine(d1); Console.WriteLine(d2); Console.WriteLine(d3); 产生以下结果: 261.00 261 261.00 如果要保留尾随零,请以一种为其提供有关输入精度的足够数据的方式构造Decimal. 请记住,正如其他答案所述,调试器提供的字符串不一定与ToString()生成的字符串相同. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- textfield autoSize 动态文本加载xml数据,全部显示问题
- Flex TextInput 禁止输入特殊字符
- 创建small表空间size32G报错ORA-01144
- WinCE6.0 修改开机Logo方法集锦(三)
- ruby – 为什么Rails控制台说“无法加载这样的文件 – read
- UML概念汇总
- objective-c – 在这个函数声明中“ – (void)”是什么意思
- ruby-on-rails – Rails PDF生成Prawn的替代品
- ruby-on-rails – 未写入日志文件(Passenger)
- 设计模式原则篇(3):依赖倒转原则---Dependence Inversion P