using UnityEngine; using System; using System.Linq; public static class IntExtensions { public static int RandomPlusMinus(){ return UnityEngine.Random.Range(0, 2) * 2 - 1; } public static int RandomChooseRatio(params int[] ratioArray){ return RandomChooseRatio(new System.Random(), ratioArray); } public static int RandomChooseRatio(System.Random rand, params int[] ratioArray){ var totalRatio = ratioArray.Sum(); var value = rand.Next(1, totalRatio + 1); var result = -1; for(var i = 0; i < ratioArray.Length; ++i){ if(value <= ratioArray[i]){ result = i; break; } value -= ratioArray[i]; } return result; } public static int PickUp(this int value, int i){ switch(i){ case 0: return 0; case 1: return value % 10; default: return (value / (int)Math.Pow(10, i - 1)) % 10; } } public static string ToStringWithDigitCommas(this int value){ return string.Format("{0:#,0}", value); } public static string ToTimeString(this int value){ int minute = value / 60; int second = value % 60; return string.Format ("{0:D2}:{1:D2}", minute, second); } /// 負数未対応 public static string ToChineseNumerals(this int number){ return ((long)number).ToChineseNumerals(); } public static string ToChineseNumerals(this long number){ if(number < 0) return number.ToString(); if(number == 0) return "〇"; string[] digit = new string[] { "", "一", "二", "三", "四", "五", "六", "七", "八", "九" }; string[] subUnit = new string[] { "", "十", "百", "千" }; string[] unit = new string[] { "", "万", "億", "兆", "京" }; string str = ""; int keta = 0; while(number > 0){ int k = keta % 4; int n = (int)(number % 10); if(k == 0 && number % 10000 > 0){ str = unit[keta / 4] + str; } if(k != 0 && n == 1){ str = subUnit[k] + str; }else if(n != 0){ str = digit[n] + subUnit[k] + str; } ++keta; number /= 10; } return str; } public static string ToMetricPrefix(this ulong value, int decimalPoint = 1){ string str = string.Format("{0:#,0}", value); if(str.Length < 4) return str; string result = str.Substring(0, str.IndexOf(',') + 2).Replace(',', '.'); string[] unit = new string[] { "", "k", "M", "G", "T", "P", "E", "Z", "Y" }; result = string.Format("{0}{1}", result, unit[Mathf.Min(str.Count(c => c == ','), unit.Length - 1)]); return result; } }