【问题标题】:"no overload for method “ToString” takes 1 arguments"“方法“ToString”没有重载需要 1 个参数”
【发布时间】:2016-04-22 19:18:02
【问题描述】:

我想将数据按原样转换为货币格式,但它给出了错误。

Faturamento.ValorNF = decimal.Parse(RsFaturamento.Fields["ValorTotal"].Value.ToString("#.##"));

错误信息: “方法“ToString”没有重载需要 1 个参数”

我想知道我的代码有什么问题?

【问题讨论】:

  • 那么RsFaturamento.Fields["ValorTotal"].Value 的编译时类型是什么?为什么要将值转换为字符串只是为了再次解析它?
  • 这是因为我有值例如:11541.121221 并想转换为 11541.12
  • 听起来你应该打电话给Math.Round...
  • 好像RsFaturamento.Fields["ValorTotal"].Value不是小数,试试decimal.Parse(RsFaturamento.Fields["ValorTotal"].Value).ToString("#.##")
  • @nizzik 现在我给出这个错误“参数 1:无法从 'object' 转换为 'string'”

标签: c# notation


【解决方案1】:

无论是什么类型的值,请确保它有一个公共的覆盖字符串 ToS​​tring(){} 方法,该方法为您提供字符串表示。

那么你可以这样做:

decimal money = decimal.Parse(RsFaturamento.Fields["ValorTotal"].Value.ToString());

Faturamento.ValorNF = money.ToString("C"));

【讨论】:

    【解决方案2】:

    无论对象 Value 的类型是什么,它的类定义都没有接受参数的 ToString() 重载。如果 Value 是集合中的 object 类型,则需要将其转换/转换为字符串,然后将其提供给小数的 parse 方法。请注意,如果您将十进制对象分配给 ValorNF,则 ToString("#.##") 并不重要,因为您始终可以稍后对其进行格式化以进行显示。

    话虽如此,如果您想将小数点格式化为 2 位小数,我建议您使用标准格式字符串来执行此操作。下面会将值解析为小数,然后使用 ToString 将其转换为保留 2 个小数位的字符串:

    decimal.Parse(RsFaturamento.Fields["ValorTotal"].Value.ToString()).ToString("N2", CultureInfo.InvariantCulture);
    

    【讨论】:

    • 现在我给出这个错误“参数 1:无法从 'object' 转换为 'string'”
    • 谢谢,根据您可以转换:Math.Round(decimal.Parse(RsFaturamento.Fields["ValorTotal"].Value.ToSrin‌​g()), 2);
    猜你喜欢
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2021-11-04
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多