Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将字符串显式转换为浮点_C#_Unity3d_Scripting Language - Fatal编程技术网

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

C# 无法将字符串显式转换为浮点,c#,unity3d,scripting-language,C#,Unity3d,Scripting Language,我使用以下代码在我的unity游戏中格式化货币。但有一些错误消息说无法显式地将字符串转换为浮点 public float FormatAmount(float amount) { if (amount <= 999) { return amount; } // Thousands 106 else if (amount >= 1000 && amount <=

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

    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;
        }
    }

您提供的代码有几个问题。 方法签名声明为具有浮点输出:

公开浮动格式金额浮动金额

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

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

返回金额-将通过浮动。 退货金额/1000+K;-它将传递一个字符串。 这里有两种可能性

如果需要一个float作为函数的输出,则只需返回一个float。这意味着你不会有+字母。 如果要保留这些字母并返回字符串,则需要确保只传递字符串。这意味着你可以 退货金额/1000+K;,但是您还需要将.toString添加到只有一个float的return中。 所以最终会是这样的:
您可能还需要考虑PaulF关于float限制的评论,以及Draco18使用外部数字库处理如此大的值的解决方案

这是正确的,您连接了一个字符串,并且您的函数返回float。
更改返回方法类型。

您返回的是字符串,但您的方法签名是返回浮点。停止向返回值追加字符串。如果需要,请将返回值更改为字符串。金额/1000+K;,金额/1000000+M,依此类推。你不能那样做。您正在尝试将字符串添加到float。你希望发生什么?@Programmer:如果是这样的话,那就错了,但我认为这是在调整值&为显示输出字符串添加字符串后缀。货币应该始终使用十进制类型。这不是问题所在。请解释一下这怎么不是问题所在?他声明了一个float作为返回参数,并尝试返回一个字符串。他要么得到+字符串的环,要么改变返回类型。或者我错了吗?如果OP确实需要返回字符串-这确实解决了两个返回量以外的问题;需要更改以返回amount.ToString;PaulF发表了我想发表的评论。这取决于你想返回什么,简单地做你答案中的事情并不能解决所有问题。我相信假设他真的想要一根线是可以的。编辑:至于你假设他的代码的其余部分不能解决所有的问题,这和我正在做的是一样的,只是方向相反。
public string FormatAmount(float amount)
    {
        if (amount <= 999) {
            return amount.toString();
        }
        else if (amount >= 1000 && amount <= 999999) {
            return (amount / 1000 + "K");
        }
    }