1

我有一个脚本可以生成一个数字并将其设置为一个文本框。例如,如果数字是 6.3,我希望能够将其转换为 6 年 4 个月。

有没有快速的方法来做到这一点?

4

5 回答 5

1
var n = 6.3;
var y = Math.floor(n);            // whole years
var m = Math.floor(12 * (n - y)); // treat remainder as fraction of a year

我注意到这个月给出了 3,而不是 4。为什么你认为 6.3 应该给出 4 个月?6 年零 4 个月是 6.333333 年。

于 2012-04-17T09:06:16.270 回答
1

我真的不确定您是想从输入中创建日期/数字还是只是拆分数字并制作一个字符串?我去了第二个!

var number = 6.3;
var splitstring = number.toString().split('.');
var years = splitstring[0];
var months = splitstring[1];
alert(years + ' years,' + months + ' months');​

这里的工作示例

于 2012-04-17T09:06:25.533 回答
0
function getDescription(str)
{
    var description = "";
    var years = 0;
    var months = 0;
    var splits = str.split('.');
    if(splits.length >= 1)
    {
       years = parseInt(splits[0]);
    }
    if(splits.length >= 2)
    {
       months = parseInt(splits[1]);
    }
    return years + ' years' + ' ' + months + ' months';
}

打电话给

getDescription('6.3');

或者

getDescription(document.getElementById('my_textbox').value);
于 2012-04-17T09:06:58.377 回答
0
var num = 8.62;
console.log("%d year/s and %d month/s", ~~num, ~~((num - ~~num)*12)); 
/* 8 year/s and 7 month/s */
于 2012-04-17T09:10:04.870 回答
0
var n = 6.3
var years = Math.floor(n);
var months = Math.round((n * 12) % 12);

% 表示模数,它返回除法的余数,而 round 将数字四舍五入到最接近的整数。

所以...

  • Math.floor(6.3) 将返回 6 年
  • (6.3 * 12) % 12 将返回 3.6 个月
  • round(3.6) 将返回 4 个月,这解释了为什么 6.3 年就像 6 年零 4 个月
于 2016-06-13T19:48:27.367 回答