无法将字符串显式转换为浮点数

Cannot explicitly convert string to float

我正在使用以下代码在我的 unity 游戏中格式化货币。但是有一些错误消息说 "Cannot explicitly convert string to 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;
        }
    }

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

public float FormatAmount(float amount)

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

但是,在您的 return 年代,您有

  1. return 数量 - 这将传递一个浮点数。
  2. return (数量 / 1000 + "K"); - 这将传递一个字符串。

这里有2种可能。

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

您可能还想考虑 PaulF 关于浮点数限制的评论,以及 Draco18 对如此大的值使用外部数字库的解决方案。

正确,您连接了一个字符串和您的函数 returns float。 更改 return 方法类型。