我在谷歌电子表格中使用JavaScript。我想将一个数字转换为" money"在游戏中代表,这是" X金X银X铜"。 100铜是1银,100银是1金。
我在网上找到了这个功能:
/**
* Formats the sell value as "Ng Ns Nc" to match the ingame display string.
*/
function formatAsGold(sellValue) {
var n = sellValue;
var s = "";
if (sellValue < 0) {
s = "-";
n = Math.abs(n);
}
var gold = Math.floor(((n / 10000) % 100));
var silver = Math.floor(((n / 100) % 100));
var copper = Math.floor((n % 100)) + "c";
if (gold == 0) {
gold = "";
} else {
gold += "g ";
}
if (silver == 0) {
silver = "";
} else {
silver += "s ";
}
return s + gold + silver + copper;
}
问题是,它无法正常工作:
a number: 2293900
produces the string: 29g 39s 0c
should be: 229g 39s 0c
我该如何解决这个问题?
答案 0 :(得分:0)
假设2293900
是铜的数量,并且你想要计算你需要多少金币,银币和铜币,这可能会有所帮助......
mod
运算符返回除以mod
数后提供的数字的余数,在本例中为100
。所以这对于银和铜而不是黄金是必要的。首先确定金块,然后使用% 100
确定银,然后使用铜而不包括更有价值的物种。
var gold = Math.floor(n / 10000);
var silver = Math.floor(((n / 100) % 100));
var copper = Math.floor((n % 100)) + "c";
在确定“战利品”的黄金部分时,没有更高的值可以排除,因此在计算黄金部分时会失去% 100
。
JSFiddle示例。