在軟件開發過程中,接口聯調是實現項目交互無法避免的,在聯調過程中會出現一些數據之間的轉換的問題,例如基本數據類型的轉換、換算單位之間的轉換等等,今天我們就通過金額分與元做切入點,聊一聊換算單位之間的轉換!
前兩天一個同事接到一個任務,A系統和另一個平臺B做聯調,業務是B平臺入參調A系統接口,A系統經過一系列計算等等得出結果後返回給B,然而A系統金額單位是“分”,而B平臺金額單位則是“元”,結果該同事就爲何時將分轉換爲元,陷入了糾結之中。最後實在想不通,就找到了我。
他的疑慮是這樣的:
100元*100元=10000元 兩個100塊相乘到最後得到的是10000塊
換成分的話 10000分*10000分=100000000分 分再轉換成元100000000分/100=1000000元
這樣算的話數據就平白無故多了兩個0,所以他最終認爲設計到金額相關數據應該在在計算前換算好,我總覺得哪裏有問題,可當時並沒有找到問題出在哪裏,所以當時便默許了他的方案。
這個問題在糾結了兩天之後,終於有了答案,答案就是這小子不光自己鑽牛角尖,連帶着把我也帶進溝裏了。
先追溯到小學二年級的時候,我們學習乘法口訣的時候會有這樣一道題:
一輛車一次可以拉10捆柴,10次可以拉多少捆?答案明顯就是
10捆*10=100捆
在這道問題中,很明顯,後面的乘數的單位並不是捆,二十次,最終的答案100捆每10次,也就是說10次可以拉100捆
根據這個線索繼續思考,又思考到一個問題
1米*1米=1米? 很顯然答案是否定的,結果是1平方米。無獨有偶,壓力/受力面積=壓強......
最後得出了結論,在計算過程中,不光數據計算,單位也會跟着計算,所以
100元*100元≠10000元 而是 100元*100元=10000平方元
10000分*10000分≠100000000分 而是 10000分*10000分=100000000平方分=10000平方元
在回顧以往的編程時光,金額之間相乘並不存在,它就是個僞命題,例如五險一金、津貼、年終獎、訂單金額等等,跟金額相乘的都只是係數而已,所以這個問題確實是鑽牛角尖了!