test-decimal.nut 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. local f1 = 1.1;
  2. local f2 = 2.2;
  3. print(f1+f2);
  4. f1 = 0.1;
  5. f2 = 0.3;
  6. print(f1+f1+f1-f2);
  7. local d = Decimal();
  8. print(d.isnan(), d.iszero(), d.isodd(), d.iseven());
  9. auto saved_prec = Decimal.context.prec();
  10. print(saved_prec);
  11. Decimal.context.prec(56);
  12. print(Decimal(2).sqrt());
  13. print(Decimal(2).sqrt().pow(Decimal(2)));
  14. local decpi = Decimal("3.1415926535897932384626433832795028841971693993751058209749445923078164062862090");
  15. print(decpi.context.prec());
  16. print("decpi", decpi);
  17. local decpi2 = Decimal("3.1415926535897932384626433832795028841971693993751058209749445923078164062862090");
  18. print("decpi2", decpi2);
  19. print(decpi == decpi2);
  20. Decimal.context.prec(saved_prec);
  21. local dec1 = Decimal("1.1");
  22. local dec2 = Decimal("2.2");
  23. print(dec1, dec2, dec1 + dec2)
  24. local dec44 = Decimal();
  25. print("dec44", dec44);
  26. dec44.set("44.4");
  27. print("dec44", dec44);
  28. dec44.set(48);
  29. print("dec44", dec44);
  30. dec44.set(49.8);
  31. print("dec44", dec44);
  32. print("dec44", dec1 + dec44.set(22));
  33. dec1 = Decimal("0.1");
  34. dec2 = Decimal("0.3");
  35. print(dec1+dec1+dec1-dec2);
  36. dec1 = Decimal("10.0");
  37. dec2 = Decimal("3.33");
  38. local result = dec1 + dec2;
  39. print(result);
  40. result = dec1 - dec2;
  41. print(result);
  42. result = dec1 * dec2;
  43. print(result);
  44. result = dec1 / dec2;
  45. print(result);
  46. dec2 = Decimal(0);
  47. try {
  48. result = dec1 / dec2;
  49. }
  50. catch(e){
  51. print(e);
  52. }
  53. print(result);
  54. print(Decimal.context);
  55. print(result.context.prec());
  56. dec1 = Decimal("10.0");
  57. dec2 = Decimal("3.33");
  58. local count = 1000;
  59. f1 = 10.54;
  60. f2 = 3.28;
  61. local now = os.clock();
  62. for(local i=0; i < count; ++i){
  63. result = dec1 + dec2;
  64. result = dec1 - dec2;
  65. result = dec1 * dec2;
  66. result = dec1 / dec2;
  67. //if(i%1000) collectgarbage();
  68. if(i%1000) dummy(); //dummy function call to trigger release hook garbage collection
  69. }
  70. print("Decimal took", os.clock()-now);
  71. now = os.clock();
  72. for(local i=0; i < count; ++i){
  73. result = f1 + f2;
  74. result = f1 - f2;
  75. result = f1 * f2;
  76. result = f1 / f2;
  77. if(i%1000) dummy(); // only to make this loop with the same extra load of a function call
  78. }
  79. print("Float took", os.clock()-now);
  80. //stdin.readn('c');