public static Unit operator +(Unit u1, Unit u2)

{

Unit result = u1;


if (Mathf.Abs(u1.unit - u2.unit) > 5)

{

if (u1.unit < u2.unit) { result = u2; }

else { result = u1; }

}

else

{

float temp = (Mathf.Pow(10, u1.unit - u2.unit) * u1.num + u2.num) * Mathf.Pow(10, u2.unit - u1.unit);


result = SetUnit(result, temp);

}


return result;

}



SetUnit์ด ๊ณ„์‚ฐ์— ๋“ค์–ด๊ฐ€๋ฉด ์›๋ณธ ๊ฐ’์„ ๋ฐ”๊ฟ”๋ฒ„๋ฆผ.... ๋””๋ฒ„๊ทธ ์ฐ์–ด๋ดค๋Š”๋ฐ ๊ฑฐ์˜ ํ™•์‹คํ•จ... ์›๋ณธ์„ ์•ˆ๊ฐ–๊ณ  ์žˆ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ํ˜ผ์ž ๋ฐ”๊พธ๋Š”๊ฑฐ์ž„??


๊ทธ๋ƒฅ ์—ฐ์‚ฐ์ด ๋ณต์žกํ•˜๋‹ค๊ฐ€ ๋์ธ๊ฑฐ ๊ฐ™์€๋ฐ


์•„๋ž˜๊ฐ€ SetUnit์ž„


static Unit SetUnit(Unit u1, float temp)

{

Unit result = u1;


while (true) //์ˆซ์ž ์ž๋ฆฌ 6์ž๋ฆฌ๋กœ ๋ณด์ •.

{

InfiniteLoopDetector.Run(); //๋ฌดํ•œ๋ฃจํ”„ ์ฒดํฌ์šฉ์ž„


if (temp == 0)

{

result = zero;

break;

}

else if (Mathf.Abs(temp) >= 1000000)

{

temp *= 0.1f;

result.unit++;

}

else if (Mathf.Abs(temp) < 100000)

{

temp *= 10f;

result.unit--;

}

else

{

result.num = (int)temp;

break;

}

}


return result;

}



์ง„์งœ ์–ด์ง€๋Ÿฌ์›Œ... ๋ญ์ž„ ๋Œ€์ฒด


SetUnit ์ดํ›„์— ๊ฐ’์ด result๋กœ ๋ฐ”๋€Œ์–ด์žˆ์Œ