我使用以下代码在我的团结游戏中格式化货币。但是有一些错误消息说"无法将字符串显式转换为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;
}
}
答案 0 :(得分:2)
您提供的代码存在一些问题。 方法签名被声明为具有浮点输出:
public float FormatAmount( float 金额)
float 是输出,定义为float。第二个 float 是输入,它需要一个浮点数(如果你在提供浮点数的同时调用该函数,这个就可以了)
但是,在你的回报中,你有
这里有两种可能性。
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)
这是正确的,你连接一个字符串,你的函数返回浮点数。 更改返回方法类型。