【问题标题】:Format String Value Precision not working格式字符串值精度不起作用
【发布时间】:2014-03-31 15:37:57
【问题描述】:

我有以下代码,我认为应该将字符串格式化为小数点后四位。 (意图是值 3.59,添加尾随零,使字符串值变为 3.5900)

string   PreFC = string.Format(dr.Cells["Price"].Value.ToString(),"{0:n4}");
                       // PreFC = (dr.Cells["Price"].Value.ToString());

                        StringBuilder FC = new StringBuilder(PreFC);
                        MessageBox.Show(PreFC);

这不起作用。它给我的值是 3.59 而不是 3.5900。我做错了什么?

【问题讨论】:

  • 注意:.ToString() 已经将值转换为字符串,因此没有进一步的格式可用。
  • 这实际上是有道理的。谢谢@ja72!

标签: c# string-formatting precision


【解决方案1】:

您有错误的格式,并且认为它应该是:

string   PreFC = string.Format("{0:n4}", dr.Cells["Price"].Value);
                            //Format should be first

不要在值上调用ToString,您将无法使用数字格式处理字符串值。而是只传递dr.Cells["Price"].Value,因为string.Format 接受object 类型参数

【讨论】:

  • 为什么要转换或转换? String.Format 需要对象参数。
  • 我在尝试第一行时遇到了无效的强制转换异常。第二个完美运行!非常感谢!
【解决方案2】:

见Standard Numeric Format Strings

对于“精度说明符”,使用“f”

string PreFC = ((double)dr.Cells["Price"].Value).ToString("f");

【讨论】:

  • 您需要将参数的顺序更改为string.Format()。
  • @lomed,不是Value 的Object 类型,因此仅支持无参数ToString()?
猜你喜欢
  • 2017-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-18
  • 1970-01-01
  • 2016-09-03
相关资源
最近更新 更多