无法将字符串显式转换为float

时间:2018-06-18 15:55:13

标签: c# unity3d scripting-language

我使用以下代码在我的团结游戏中格式化货币。但是有一些错误消息说"无法将字符串显式转换为float"

    public float FormatAmount(float amount)
    {
        if (amount <= 999) {
            return amount;
        }
        // Thousands 106
        else if (amount >= 1000 && amount <= 999999) {
            return (amount / 1000 + "K");
        }
        // Millions 106
        else if (amount >= 1000000 && amount <= 999999999) {
            return (amount / 1000000 + "M");
        }

        // Billions 109
        else if (amount >= 1000000000 && amount <= 999999999999) {
            return (amount / 1000000000 + "B");
        }

        // Trillions 1012
        else if (amount >= 1000000000000 && amount <= 999999999999999) {
            return (amount / 1000000000000 + "T");
        }

        // Quadrillions 1015
        else if (amount >= 1000000000000000 && amount <= 999999999999999999) {
            return (amount / 1000000000000000 + "Quad");
        }
        // Quintillions 1018
        else if (amount >= 1000000000000000000 && amount <= 999999999999999999) {
            return (amount / 1000000000000000000 + "Quin");
        } else {
            return amount;
        }
    }

2 个答案:

答案 0 :(得分:2)

您提供的代码存在一些问题。 方法签名被声明为具有浮点输出:

  

public float FormatAmount( float 金额)

float 是输出,定义为float。第二个 float 是输入,它需要一个浮点数(如果你在提供浮点数的同时调用该函数,这个就可以了)

但是,在你的回报中,你有

  1. 返回金额 - 将传递一个浮动。
  2. 返回(金额/ 1000 +&#34; K&#34;); - 将传递一个字符串。
  3. 这里有两种可能性。

    1. 如果需要浮点作为函数的输出,则需要返回浮点数。这意味着你不会有+#34;字母&#34;。
    2. 如果你想保留字母并因此返回一个字符串,你需要确保你只传递一个字符串。这意味着你可以保持 返回(金额/ 1000 +&#34; K&#34;); ,但您还需要将.toString()添加到只有浮点数的返回值。 所以最后看起来像这样:
    3. public string FormatAmount(float amount)
          {
              if (amount <= 999) {
                  return amount.toString();
              }
              else if (amount >= 1000 && amount <= 999999) {
                  return (amount / 1000 + "K");
              }
          }
      

      您可能还想将PaulF的注释考虑在浮点数的限制之内,以及Draco18使用外部数字库来解决大数值的问题。

答案 1 :(得分:0)

这是正确的,你连接一个字符串,你的函数返回浮点数。 更改返回方法类型。