private void TestCase_Operator_1() { Debug.Log("Start TestCase_Operator_1"); SHugeNumber sHugeNum1 = new SHugeNumber(123, SHugeNumber.EUnit.None); SHugeNumber sHugeNum2 = new SHugeNumber(456, SHugeNumber.EUnit.None); Debug.Log(sHugeNum1 + sHugeNum2); Debug.Log(sHugeNum1 + sHugeNum2 - sHugeNum1); sHugeNum1 = new SHugeNumber(100, SHugeNumber.EUnit.A); sHugeNum2 = new SHugeNumber(100, SHugeNumber.EUnit.B); Debug.Log(sHugeNum1 + sHugeNum2); Debug.Log(sHugeNum1 + sHugeNum2 - sHugeNum1); //CManagerProfiler.instance.DoStartTestCase( "Test" ); sHugeNum1 = new SHugeNumber(1, SHugeNumber.EUnit.A); sHugeNum2 = new SHugeNumber(1, SHugeNumber.EUnit.C); SHugeNumber sHugeNum3 = sHugeNum2; for (int i = 0; i < 1000; i++) { sHugeNum3 += sHugeNum1; } sHugeNum3 += new SHugeNumber(999, SHugeNumber.EUnit.B); //CManagerProfiler.instance.DoFinishTestCase( "Test" ); //CManagerProfiler.instance.DoPrintResult(false); Debug.Log(sHugeNum3); }
static public SHugeNumber operator -(SHugeNumber sNumberA, SHugeNumber sNumberB) { SHugeNumber sNumberHuge; SHugeNumber sNumberSmall; bool bIsCompare = CheckIsCompareUnit(sNumberA, sNumberB, out sNumberHuge, out sNumberSmall); if (bIsCompare) { return(new SHugeNumber(sNumberA._dNumber - sNumberB._dNumber, sNumberHuge._eUnit)); } else { bool bIsNegative = sNumberA.p_eUnit < sNumberB.p_eUnit; int iUnitOffset = sNumberHuge._eUnit - sNumberSmall._eUnit; for (int i = 0; i < iUnitOffset; i++) { sNumberSmall._dNumber *= 0.001; } SHugeNumber sReturnNumber = new SHugeNumber(sNumberHuge._dNumber - sNumberSmall._dNumber, sNumberHuge._eUnit); if (bIsNegative) { sReturnNumber._dNumber *= -1; } return(sReturnNumber); } }
private void TestCase_Operator_2() { Debug.Log("Start TestCase_Operator_2"); CManagerProfiler.instance.DoStartTestCase("Test"); for (int i = 0; i < 1000; i++) { SHugeNumber sHugeNum1 = new SHugeNumber(1, SHugeNumber.EUnit.None); SHugeNumber sHugeNum2 = sHugeNum1 * 100000000; SHugeNumber sHugeNum3 = new SHugeNumber(1, SHugeNumber.EUnit.G); sHugeNum3 += sHugeNum2; sHugeNum3 -= sHugeNum2; } CManagerProfiler.instance.DoFinishTestCase("Test"); CManagerProfiler.instance.DoPrintResult(false); }
private void TestCase_InitNumber() { Debug.Log("Start TestCase_InitNumber"); SHugeNumber sHugeNum = new SHugeNumber(100, SHugeNumber.EUnit.None); Debug.Log(sHugeNum); sHugeNum = new SHugeNumber(1234100.1234, SHugeNumber.EUnit.None); Debug.Log(sHugeNum); sHugeNum = new SHugeNumber(0.1234567, SHugeNumber.EUnit.A); Debug.Log(sHugeNum); sHugeNum = new SHugeNumber(1234100.1234, SHugeNumber.EUnit.G); Debug.Log(sHugeNum); }
static public bool CheckIsCompareUnit(SHugeNumber sNumberA, SHugeNumber sNumberB, out SHugeNumber sNumberHuge, out SHugeNumber sNumberSmall) { bool bIsCompare = true; if (sNumberA._eUnit > sNumberB._eUnit) { sNumberHuge = sNumberA; sNumberSmall = sNumberB; bIsCompare = false; } else if (sNumberA._eUnit < sNumberB._eUnit) { sNumberHuge = sNumberB; sNumberSmall = sNumberA; bIsCompare = false; } else if (sNumberA._dNumber > sNumberB._dNumber) { sNumberHuge = sNumberA; sNumberSmall = sNumberB; bIsCompare = true; } else if (sNumberA._dNumber < sNumberB._dNumber) { sNumberHuge = sNumberB; sNumberSmall = sNumberA; bIsCompare = true; } else { sNumberHuge = new SHugeNumber(); sNumberSmall = new SHugeNumber(); } return(bIsCompare); }