首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数字转换为...XXg XXs XXc字符串

将数字转换为...XXg XXs XXc字符串
EN

Stack Overflow用户
提问于 2015-12-05 15:55:29
回答 1查看 739关注 0票数 0

我在谷歌电子表格中使用JavaScript。我想将一个数字转换成游戏中的“货币”表示,即"X黄金X银X铜“。100铜是1银,100银是1金。

我在网上找到了这个功能:

代码语言:javascript
复制
/**
 * 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;
}

问题是,它不能正常工作:

代码语言:javascript
复制
a number: 2293900
produces the string: 29g 39s 0c
should be: 229g 39s 0c

我该怎么解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-05 16:27:53

假设2293900是铜币的数量,并且你想要计算出你需要多少金牌、银牌和铜牌才能满足这个要求,这可能会有所帮助.

mod操作符返回除以mod数(在本例中为100 )后提供的数字的其余部分。所以,这是必要的银和铜,但不是黄金。首先确定金块,然后使用% 100来确定银,然后铜不包括更大的价值的金币。

代码语言:javascript
复制
var gold = Math.floor(n / 10000);
var silver = Math.floor(((n / 100) % 100));
var copper = Math.floor((n % 100)) + "c";

在确定“战利品”的黄金部分时,没有更高的价值可以排除,所以在计算黄金部分时失去% 100

JSFiddle例子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34107473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档