将数字转换为... XXg XXs XXc string

时间:2015-12-05 15:55:29

标签: javascript google-sheets

我在谷歌电子表格中使用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

我该如何解决这个问题?

1 个答案:

答案 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示例。