7c0e618ccad89f0d9a9b777a85eeab7db2fb2570.svn-base 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. export const NumFormatUtil = {
  2. getD : function(d, n) {
  3. if(d < 0) {
  4. return "-" + NumFormatUtil.getD(Math.abs(d), n);
  5. }else {
  6. //转换成带小数点的字符串
  7. var dStr = d.toFixed(n + 2);
  8. var ddIntLen = (parseInt(d) + "").length;
  9. var left = parseInt(dStr.substring(0, n));//有效位
  10. var is5 = parseInt(dStr.substring(n, n + 1));//是否为5
  11. var nnn = parseInt(dStr.substring(n - 1, n));//第n位
  12. var not0 = Number(dStr.substring(n + 1));//第n位
  13. var add = 0;//需要进一吗
  14. var added = false;
  15. if(is5 == 5) {
  16. //奇进偶不进
  17. if(nnn % 2 == 1 || not0 != 0) {
  18. added = true;
  19. }
  20. } else if(is5 > 5) {
  21. //加进一
  22. added = true;
  23. }
  24. //N-1位要进一需要乘的数
  25. // var str = StringUtils.rightPad("1", ddIntLen - n + 1 , "0");
  26. var str = Math.pow(10, ddIntLen - n);
  27. if(added) {
  28. add = 1;//需要进一
  29. }
  30. return (left + add) * parseInt(str) + "";
  31. }
  32. },
  33. getNumZ : function(d) {
  34. if(d || (d != '' && d == 0)) {
  35. d = parseFloat(d);
  36. d = d.toFixed(2);
  37. }
  38. return d;
  39. },
  40. getD2 : function(d, n) {
  41. if(d < 0) {
  42. return "-" + NumFormatUtil.getD2(Math.abs(d), n);
  43. }else if(d == 0) {
  44. //return "0.00";
  45. return "0";
  46. }
  47. if(n > 0) {
  48. if(0 < d && d < 1) {
  49. //(0, 1)调用[1, 10)的方法
  50. var str = (Number(NumFormatUtil.getD2(d*100.0, n)) / 100.00) + "";
  51. if(str.length == 1) {
  52. str += ".000";
  53. }else if(str.length == 3) {
  54. str += "00";
  55. }else if(str.length == 4) {
  56. str += "000";
  57. }
  58. return str;
  59. }else if(1 <= d && d < 10){
  60. //(1, 10)调用[10, 100)的方法
  61. var str = (Number(NumFormatUtil.getD2(d*10.0, n)) / 10.0) + "";
  62. if(str.length == 1) {
  63. str += ".00";
  64. }else if(str.length == 3) {
  65. str += "0";
  66. }
  67. return str;
  68. }else if(10 <= d && d < 100) {
  69. //(10, 100)调用[1000)的方法
  70. return (parseInt(Number(NumFormatUtil.getD2(d*10.0, n)) / 10.0)) + "";
  71. }else if(100 <= d) {
  72. return NumFormatUtil.getD(d, n);
  73. }
  74. }else {
  75. return d + "";
  76. }
  77. return null;
  78. },
  79. getNumQ : function(d) {
  80. if(d || d == 0) {
  81. d = parseFloat(d);
  82. return NumFormatUtil.getD3(d, 3);
  83. }
  84. return d;
  85. },
  86. getD3 : function(d, n) {
  87. console.log('我是流量啊')
  88. console.log(d)
  89. if(d < 0) {
  90. return "-" + NumFormatUtil.getD3(Math.abs(d), n);
  91. }else if(d == 0) {
  92. //return "0.000";
  93. return "0";
  94. }
  95. if(n > 0) {
  96. if(0 < d && d < 1) {
  97. //(0, 1)调用[1, 10)的方法
  98. var str = (Number(NumFormatUtil.getD3(d*100.0, n)) / 100.00) + "";
  99. if(str.length == 1) {
  100. str += ".000";
  101. }else if(str.length == 3) {
  102. str += "00";
  103. }else if(str.length == 4) {
  104. str += "0";
  105. }else if(str.length > 5) {
  106. str = str.substring(0, 5);
  107. }
  108. return str;
  109. }else if(1 <= d && d < 10){
  110. //(1, 10)调用[10, 100)的方法
  111. var str = (Number(NumFormatUtil.getD3(d*10.0, n)) / 10.0) + "";
  112. // return StringUtils.rightPad(str, n + 1, "0");
  113. if(str.length == 1) {
  114. str += ".00";
  115. }else if(str.length == 3) {
  116. str += "0";
  117. }else if(str.length > 4) {
  118. str = str.substring(0, 4);
  119. }
  120. return str;
  121. }else if(10 <= d && d < 100) {
  122. //(10, 100)调用[1000)的方法
  123. var str = (Number(NumFormatUtil.getD3(d*10.0, n)) / 10.0) + "";
  124. if(str.length == 2) {
  125. str += ".0";
  126. }
  127. return str;
  128. }else if(100 <= d && d < 1000) {
  129. //(100, 1000)调用[10000)的方法
  130. return (parseInt(Number(NumFormatUtil.getD3(d*10.0, n)) / 10.0)) + "";
  131. }else if(1000 <= d) {
  132. return NumFormatUtil.getD(d, n);
  133. }
  134. }else {
  135. return d + "";
  136. }
  137. return null;
  138. }
  139. }