paperDef.cpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include "paperDef.h"
  2. #include <QStringList>
  3. int g_ItemOrderIndex;
  4. QString Arab2Sinogram(int num)
  5. {
  6. QStringList lNum = {QString::fromLocal8Bit("零"),
  7. QString::fromLocal8Bit("一"),
  8. QString::fromLocal8Bit("二"),
  9. QString::fromLocal8Bit("三"),
  10. QString::fromLocal8Bit("四"),
  11. QString::fromLocal8Bit("五"),
  12. QString::fromLocal8Bit("六"),
  13. QString::fromLocal8Bit("七"),
  14. QString::fromLocal8Bit("八"),
  15. QString::fromLocal8Bit("九")};
  16. QStringList lBit = {"", QString::fromLocal8Bit("十"),
  17. QString::fromLocal8Bit("百"),
  18. QString::fromLocal8Bit("千")};
  19. QStringList lTep = {"",
  20. QString::fromLocal8Bit("万"),
  21. QString::fromLocal8Bit("亿"),
  22. QString::fromLocal8Bit("万"),
  23. QString::fromLocal8Bit("亿"),
  24. QString::fromLocal8Bit("万"),
  25. QString::fromLocal8Bit("亿")};
  26. std::vector<char> input;
  27. QString output;
  28. bool bZero = false;
  29. int n = (int)log10((float)num) + 1;
  30. for (int i = 0; i < n; i++, num = num / 10)
  31. {
  32. input.push_back((char)(num % 10));
  33. }
  34. for (int i = n - 1; i >= 0; i--)
  35. {
  36. num = input[i];
  37. if (num == 0)
  38. {
  39. bZero = true;
  40. }
  41. else if (num > 0 && bZero)
  42. {
  43. output += lNum[0];
  44. bZero = false;
  45. }
  46. if (num > 0)
  47. {
  48. output += lNum[num];
  49. output += lBit[(i) % 4];
  50. }
  51. if (i % 4 == 0)
  52. {
  53. output += lTep[i / 4];
  54. bZero = true;
  55. }
  56. }
  57. if (output.isEmpty())
  58. {
  59. output += lNum[0];
  60. }
  61. return output;
  62. }