鋭いjsのお母さんはもうお釣りを間違えたことを心配しなくてもいいです.

33309 ワード

Jsでレジ機能を実現します.
 1 <!DOCTYPE html>

 2 <html xmlns="http://www.w3.org/1999/xhtml">

 3 <head>

 4     <title>xx      </title>

 5     <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js">

 6     </script>

 7     <script type="text/javascript">

 8         $(function () {

 9             $('form').submit(function () {

10                 var payable = Number($('#txtPayable').val());//  

11                 var payment = Number($('#txtPayment').val());//  

12                 if (payable === payment) {

13                     $('#tdPocket').text(0);

14                 } else if (payable > payment) {

15                     $('#tdPocket').text('      ' + (payable*10 - payment*10)/10 + ' !');

16                 } else {//    

17                     var yuan = [100, 50, 20, 10, 5, 1];

18                     var jiao = [5, 2, 1];

19                     var msg = '';

20                     var payableYuan = parseInt(payable);

21                     var paymentYuan = parseInt(payment);

22                     var pocketYuan = paymentYuan - payableYuan;//   

23                     var surplus = pocketYuan;

24                     $(yuan).each(function() {

25                             if (surplus >= this) {

26                                 var count = parseInt(surplus / this);

27                                 msg += this + ' ' + count + ' ';

28                                 surplus -= count * this;

29                             }

30                     });

31                     // js 10.2-10.1=0.09999999999999964,      ,  *10

32                     var pocketJiao = parseInt(((payment * 10) - (payable * 10)) - (pocketYuan * 10));//   

33                     surplus = pocketJiao;

34                     $(jiao).each(function () {

35                         if (surplus >= this) {

36                             var count = parseInt(surplus / this);

37                             msg += this + ' ' + count + ' ';

38                             surplus -= count * this;

39                         }

40                     });

41                     msg += ' ' + pocketYuan + '.' + pocketJiao + ' ';

42                     $('#tdPocket').text(msg);

43                 }

44                 return false;

45             });

46         });

47     </script>

48     <style type="text/css">

49         table {

50             border: 1px solid #0000cd;

51         }

52 

53         td {

54             padding: 2px;

55         }

56 

57         .right {

58             text-align: right;

59         } 

60 

61         .left {

62             text-align: left;

63             width: 50px;

64         }

65 

66         .center {

67             text-align: center;

68         }

69     </style>

70 </head>

71 <body>

72     <form>

73         <table border="1" cellpadding="0" cellspacing="0">

74             <tr>

75                 <td class="right"></td>

76                 <td class="left"><input type="number" id="txtPayable" min="0" step="any" /></td>

77             </tr>

78             <tr>

79                 <td class="right"></td>

80                 <td class="left"><input type="number" id="txtPayment" min="0" step="any" /></td>

81             </tr>

82             <tr>

83                 <td class="right"></td>

84                 <td class="left" id="tdPocket"></td>

85             </tr>

86             <tr>

87                 <td colspan="2" class="center"><input type="submit" value="  " id="btnCalc" /></td>

88             </tr>

89         </table>

90     </form>

91 </body>

92 </html>
効果
锋利的js之妈妈再也不用担心我找错钱了
形がちょっと丑いので、调べに行く时间がありません.
お釣りは最大のお金から始まります.5.1元のお釣りを5元ではなく、5枚の1元を探してください.
現在の第5セットの人民元の額面だけを試験して、貨幣の分配を考慮しないで、現在ほとんど流通していません.
ポイントは小銭を算出する時、x枚のy面のお金を探し出すべきです.jsは小数点の計算に誤差があるので、まず小数点を整数に換算して、小数点に変えます.
jsの10.2-11の結果は0.099999999999964です.
結果を得るには0.1、愚かな方法(10.2*10-0.1*10)/10=0.1;
この神器があったら、お釣りの心配はもうないですか?やはりレジのほうが好きです.もっとお金をください.
 
もしあなたに役に立つと思いましたら、ご褒美をお願いします.ありがとうございます.
足りないところと間違っているところを指摘してください.