无法将字符串显式转换为浮点数
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 年代,您有
- return 数量 - 这将传递一个浮点数。
- return (数量 / 1000 + "K"); - 这将传递一个字符串。
这里有2种可能。
- 如果您需要一个浮点数作为函数的输出,您只需要 return一个浮点数。这意味着您将没有 +"letter"。
- 如果您想保留字母并因此 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 方法类型。
我正在使用以下代码在我的 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 年代,您有
- return 数量 - 这将传递一个浮点数。
- return (数量 / 1000 + "K"); - 这将传递一个字符串。
这里有2种可能。
- 如果您需要一个浮点数作为函数的输出,您只需要 return一个浮点数。这意味着您将没有 +"letter"。
- 如果您想保留字母并因此 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 方法类型。