calculate.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. // 精确计算加法
  2. export function acc(arg1, arg2) {
  3. let r1 = deal(arg1)
  4. let r2 = deal(arg2)
  5. let m = Math.pow(10, Math.max(r1, r2))
  6. let res1 = numMulti(arg1, m)
  7. let res2 = numMulti(arg2, m)
  8. return (res1 + res2) / m
  9. }
  10. export function deal(arg) {
  11. var t = 0
  12. try {
  13. t = arg.toString().split(".")[1].length
  14. } catch (e) {}
  15. return t
  16. }
  17. // 乘法精度计算
  18. export function numMulti(num1, num2) {
  19. var baseNum = 0
  20. try {
  21. baseNum += num1.toString().split(".")[1].length
  22. } catch (e) {}
  23. try {
  24. baseNum += num2.toString().split(".")[1].length
  25. } catch (e) {}
  26. return Number(num1.toString().replace(".", "")) * Number(num2.toString().replace(".", "")) / Math.pow(10, baseNum)
  27. }
  28. /**
  29. * px换算rpx
  30. * @param {Number} arg px数值
  31. * @return {Number} rpx数值
  32. **/
  33. export function toRpx(arg) {
  34. const res = uni.getSystemInfoSync();
  35. return (arg * 750) / res.windowWidth;
  36. }
  37. /**
  38. * rpx换算px
  39. * @param {Number} arg rpx数值
  40. * @return {Number} px数值
  41. **/
  42. export function toPx(arg) {
  43. const res = uni.getSystemInfoSync();
  44. return (arg * res.windowWidth) / 750;
  45. }
  46. /**
  47. * 数值超过万转化为x.xW
  48. * @param {Number} arg
  49. * @return {Number}
  50. */
  51. export function toWan(arg) {
  52. console.log(arg);
  53. return arg >= 10000 ? ((arg / 10000).toFixed(1) + 'w') : arg
  54. }
  55. //瀑布流数据处理
  56. export function pubuList(list) {
  57. let arr1 = list.filter((item, index) => {
  58. if (index % 2 === 0) {
  59. return item
  60. }
  61. })
  62. let arr2 = list.filter((item, index) => {
  63. if (index % 2 === 1) {
  64. return item
  65. }
  66. })
  67. let arr = arr1.concat(arr2)
  68. if (arr.length % 2 !== 0) {
  69. arr.push({
  70. empty: true
  71. })
  72. }
  73. return arr
  74. }
  75. // 销量过滤器
  76. export function saleFilter(v) {
  77. let count = 0
  78. if (v < 10000) {
  79. count = v
  80. } else {
  81. count = toFixedCus(v / 10000, 1) + 'w+'
  82. }
  83. return count
  84. }
  85. function toFixedCus(num, decimal) {
  86. num = num.toString();
  87. let index = num.indexOf('.');
  88. if (index !== -1) {
  89. num = num.substring(0, decimal + index + 1)
  90. } else {
  91. num = num.substring(0)
  92. }
  93. return parseFloat(num).toFixed(decimal)
  94. }