// Utils.tjs - ユーティリティ関数 // Copyright (C)2001-2003, W.Dee 改変・配布は自由です property random { getter { return Math.random(); } } function intrandom(min = 0, max = 0) { // min 以上 max 以下の整数の乱数を返す // 引数が一個だけの場合は 0 〜 その数までの整数を返す if(min>max) { min <-> max; } return int(Math.random() * (max-min+1)) + min; } function str2num(str) { // 文字列->数字 ( 全角対応 ) var res; var i; for(i=0; i=0x0020 && num<=0x7e) res+=$(0xff00+num-0x20); // UNICODE else res+=str[i]; } return res; } function kansuuji( n, digits = "〇一二三四五六七八九", small_units = " 十百千", large_units = " 万億兆京", zero_expression = "ゼロ", minus_expression = "マイナス" ) { // n を一般的な漢数字表記にして返す // TJS の整数型は 922京ほどまでなので京より上の桁の処理は必要ない n = int n; if(n == 0) return zero_expression; var out = ""; // 出力文字列 if(n < 0) n = -n, out = minus_expression; n = string n; // 文字列に変換 var n_len = n.length; var n_pos = n_len - 1; var nonzero = false; for(var i = 0; i < n_len; i ++, n_pos --) { var small_unit = n_pos & 3; var digit = +n[i]; switch(small_unit) { case 0: // 1 の桁 if(digit != 0) out += digits[digit], nonzero = true; if(nonzero && n_pos) out += large_units[n_pos >> 2]; nonzero = false; break; case 1: // 十の桁 case 2: // 百の桁 case 3: // 千の桁 if(digit != 0) { /* 千の桁は 万以上の場合慣用的に 一千という。 また、一百や一十とはいわない。 */ if(digit != 1 || (small_unit == 3 && n_pos > 4)) out += digits[digit] + small_units[small_unit]; else out += small_units[small_unit]; nonzero = true; } break; } } return out; } function kansuuji_simple( n, digits = "〇一二三四五六七八九", point = "・", minus = "マイナス") { // n を漢数字表記にするが、桁単位はつけない n = string n; var n_len = n.length; var out = ""; for(var i = 0; i < n_len; i++) { var digit = n[i]; if(digit == ".") out += point; else if(digit == "-") out += minus; else if(digit >= '0' && digit <= '9') out += digits[+digit]; else out += digit; } return out; } function number_format(n) { // n を3桁ごとに カンマで区切った数値表現にする n = string n; var n_len = n.length; var n_digits = 0; // 数字の数を数える for(var i = 0; i < n_len; i++) { var digit = n[i]; if(digit >= '0' && digit <= '9') n_digits ++; else if(digit == '.' || digit == 'e') break; } var out = ""; // カンマを挿入 for(var i = 0; i < n_len; i++) { var digit = n[i]; if(digit >= '0' && digit <= '9') { n_digits --; out += digit; if(n_digits > 0 && n_digits % 3 == 0) out += ","; } else { out += digit; } } return out; }