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

私はこれが月に4ではなく3を与えることに注意します。なぜ6.3は4ヶ月を与えるべきだと思いますか?6年4か月は6.333333年です。

于 2012-04-17T09:06:16.270 に答える
1

入力から日付/数値を作成するのか、数値を分割して文字列を作成するのか、本当にわかりませんか?私は2番目のものに行きました!

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);

%はモジュラスを意味し、除算の余りを返しますが、丸めは数値を最も近い整数に丸めます。

それで...

  • 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 に答える