OSDN Git Service

add bigNumbers, and restrict the Max under maxInt64.
authorZhiting Lin <zlin035@uottawa.ca>
Fri, 22 Feb 2019 07:04:44 +0000 (15:04 +0800)
committerZhiting Lin <zlin035@uottawa.ca>
Fri, 22 Feb 2019 07:04:44 +0000 (15:04 +0800)
src/components/layout/profit/action.js
src/components/layout/save/action.js

index dabae4a..60ca3f0 100644 (file)
@@ -4,6 +4,7 @@ import {
 } from '../../bytom'
 import GetContractArgs from '../../constants'
 import { matchesUTXO } from '../../filter'
+import BigNumber from 'bignumber.js'
 
 export function FixedLimitProfit(account, amountBill, saver) {
   return new Promise((resolve, reject) => {
@@ -30,9 +31,14 @@ export function FixedLimitProfit(account, amountBill, saver) {
         const input = []
         const output = []
 
-        const sAmountBill = amountBill/100000000
-        const sTotalAmountBill = GetContractArgs().totalAmountBill/100000000
-        const gain = GetContractArgs().totalAmountCapital*sAmountBill/sTotalAmountBill
+        const sAmountBill = BigNumber(amountBill).div( 100000000 )
+        const sTotalAmountBill = BigNumber(GetContractArgs().totalAmountBill).div( 100000000 )
+        const multiplyResult = BigNumber( GetContractArgs().totalAmountCapital).multipliedBy( sAmountBill )
+        const gain = multiplyResult.div( sTotalAmountBill )
+
+        if( multiplyResult.isGreaterThan( 9223372036854775807 ) ){
+          throw 'The entered amount is too big, please reduce the amount.'
+        }
 
         const args = contractArguments(amountBill, saver)
 
@@ -42,7 +48,7 @@ export function FixedLimitProfit(account, amountBill, saver) {
         if(amountBill < capitalAmount){
           output.push(controlProgramAction(amountBill, GetContractArgs().assetBill, GetContractArgs().banker ))
           output.push(controlAddressAction(gain, capitalAsset, saver))
-          output.push(controlProgramAction((capitalAmount - gain), capitalAsset, GetContractArgs().profitProgram))
+          output.push(controlProgramAction((BigNumber(capitalAmount).minus(gain)), capitalAsset, GetContractArgs().profitProgram))
         }else{
           output.push(controlProgramAction(amountBill, GetContractArgs().assetBill, GetContractArgs().banker ))
           output.push(controlAddressAction(capitalAmount, capitalAsset, saver))
index daf0731..60af675 100644 (file)
@@ -4,6 +4,7 @@ import {
   contractArguments
 } from '../../bytom'
 import GetContractArgs from '../../constants'
+import BigNumber from 'bignumber.js'
 
 export function FixedLimitDeposit(account, amount, address) {
   return new Promise((resolve, reject) => {
@@ -38,7 +39,7 @@ export function FixedLimitDeposit(account, amount, address) {
         if(amount < billAmount){
           output.push(controlProgramAction(amount, GetContractArgs().assetDeposited, GetContractArgs().profitProgram))
           output.push(controlAddressAction(amount, billAsset, address))
-          output.push(controlProgramAction((billAmount-amount), billAsset, GetContractArgs().depositProgram))
+          output.push(controlProgramAction((BigNumber(billAmount).minus(BigNumber(amount))), billAsset, GetContractArgs().depositProgram))
         }else{
           output.push(controlProgramAction(amount, GetContractArgs().assetDeposited, GetContractArgs().profitProgram))
           output.push(controlAddressAction(billAmount, billAsset, address))