이전 글에서 부동소수점을 자세히 살펴보았습니다. 다시 한번 간단히 정리해보고 이제 부동소수점을 처리해보는 해결방법을 알아보도록 하겠습니다.
JavaScript에서 숫자는 64비트 IEEE-754 형식으로 다룹니다. 우리가 현재 사용하는 10진법으로 표현된 수를 2진법으로 변환할 때 64비트를 초과하는 무한 소수가 발생합니다. IEEE-754에서는 가능한 가장 가까운 숫자로 반올림하는 방법을 사용해 무한 소수가 생기는 문제를 해결합니다. 그런데 반올림 규칙을 적용하면 이 때 발생하는 ‘작은 정밀도 손실’을 우리가 볼 수는 없지만 실제로 손실은 발생합니다.
여기서 ‘안전함’이란 정수를 정확하고 올바르게 표현할 수 있다는 것을 의미합니다. JavaScript의 IEEE-754에 기술된 배정밀도 부동소숫점 형식 숫자체계로 인해 -(2^53-1)과 2^53-1 사이의 수만 안전하게 표현할 수 있습니다. 즉 범위는 -9,007,199,254,740,991 ~ 9,007,199,254,740,991(약 9000조)입니다.
부동소수점의 오차를 해결하고 사람들이 쓰는 10진법으로 오차없이 정확히 수를 표현하기 위해 라이브러리를 도입할 수 있습니다. big.js, bigdecimal.js, bignumber.js, decimal.js, math.js와 같은 많은 라이브러리들이 있습니다. 각각의 라이브러리들이 제공하는 연산이 다르므로 잘 참고해서 필요한 라이브러리를 적 용하는 게 좋겠습니다.
부동소수점 오차를 해결해야하는 개발 중인 서비스는 현재 국내에서 운영중이지만 곧 국제화가 계획 중이고, 실제 해외에도 운영될 서비스였습니다. 따라서 통화의 단위에 소수점이 있는 경우도 있어 정밀하게 10진법으로 변환해주는 라이브러리를 조사했고 후보는 big.js, decimal.js, decimal.js-light가 있었습니다.
통화의 단위, 무게의 단위가 소수점에 반영되어 정밀한 라이브러리를 찾는 것이 목표지만, 그 외에도 고려해야할 사항은 라이브러리의 용량이 적고, 이왕이면 많은 이용자가 있어 버그들이 더 많이 수정된 안정적인 라이브러리였으면 좋겠다는 점이 있었습니다. 따라서 https://npmtrends.com/ 에서 big.js, decimal.js, decimal.js-light를 비교해 보았습니다.

다운로드 횟수가 big.js > decimal.js > decimal.js-light.js 순으로 big.js의 다운로드 횟수가 가장 높습니다. 용량은 big.js 라이브러리가 가장 적었으며, 가장 최근까지 업데이트된 라이브러리는 decimal.js였습니다.
| big.js | decimal.js | decimal.js-light | |
|---|---|---|---|
| Weekly Downloads | 16,125,387 | 11,876,226 | 870,740 |
| Unpacked Size | 58.6 kB | 283 kB | 218 kB |
| Last publish | @2022년 7월 10일 | @2022년 9월 17일 | @2020년 10월 1일 |
문제를 해결하기 전, 요구사항은 소수점 몇째 자리까지 표현이 정확한지, 이러한 소수점이 포함된 숫자를 연산할 때 몇 자리까지 정밀하게 표현할 수 있는지였습니다. 일단 구체적으로 정해진 사항이 없어 다양한 방법으로 소수점의 오차를 파악해보고 어떤 해결방법이 좋을지 추후 판단해 서비스에 적용하기로 했습니다.
이에 따라 계산기, JavaScript에서 아무 처리없이 계산하는 방법을 대조군으로 조사하였습니다. 실험군으로는 10의 n제곱을 곱해 소수점을 정수로 변환해 연산 후 마지막에 10의 n제곱을 나눠 소수 부분을 표현하는 방법(이하 자체 해결 방법), big.js 라이브러리를 사용하는 방법, decimal.js-light 라이브러리를 사용하는 방법으로 나누어 test case를 조사해 비교해 보았습니다.
이 해결방법은 라이브러리 없이 해결하는 방법으로 연산하기 전 실수를 정수화한 후 이후 소수점으로 다시 표현하는 방법입니다.
소수점이 있는 숫자에 10의 거듭제곱을 곱해 우선적으로 소수점 제거합니다. 이는 부동소수점의 정밀도 손실 최소화하기 위함입니다.
모든 연산이 끝난 후 소수점을 제거하기 위해 곱했던 10의 거듭제곱으로 나눠 원래 결과값으로 변환합니다.
그래도 존재할 수 있는 부동소수점의 오차를 toFixed를 통해 어림수로 반환합니다. 1번에서 10의 거듭제곱을 곱해 소수점을 없애 주었던 이유와 동일합니다. 1번에서 보정해주었음에도 존재할 수 있는 부동소수점으로 인한 오차를 한 번 더 안전하게 보정해 주기 위함으로 toFixed를 적용했습니다.
toFixed()의 사용법입니다. String type으로 반환합니다. 소수점 n번째 수까지의 어림수를 구합니다.
default는 ‘0’으로 정수로 반환합니다.
이 경우 소수점 첫째 자리까지 표현해 반환해줍니다.
test case를 어떻게 처리하였는지 이제 code를 살펴보겠습니다.
자체 해결하는 방법으로 test case의 결과를 소수점 전부 표현한 경우입니다.
매개변수(Parameter)로 숫자인 a, b를 받고, sign으로 연산을 비교한 후 계산을 실행합니다.
자체 해결하는 방법으로 test case의 결과를 toFixed() 메서드를 이용해 정수로 표현합니다.
자체 해결하는 방법으로 toFixed(1)로 소수점 첫째 자리까지 표현합니다.
마찬가지로 자체 해결하는 방법으로 소수점 둘째 자리까지 표현합니다.
big.js 라이브러리는 10진법 기반의 연산 라이브러리이며, 가장 용량이 가볍고 다운로드 횟수가 높은 라이브러리입니다. big.js는 소수점 이하 자릿수로 지정된 정밀도를 적용하고 나눗셈에만 정밀도 적용하는 특징이 있습니다.
new Big(n) 생성자를 이용해 big.js의 내장 객체 타입의 인스턴스를 생성하여 연산합니다. n의 type은 number 또는 string 또는 Big object입니다. 따라서 toString으로 String type으로 변환합니다. 소수점의 표현은 round() 메서드를 이용했습니다.
const result = new Big(item.quantity).times(item.unitPrice);
new Big() 생성자를 통해 수량(item.quantity)를 생성하고 times() 메서드를 통해 단가(item.unitPrice)를 곱해줍니다.
big.js 라이브러리를 이용해 연산하되 소수점을 전부 표현하는 방법입니다. 매개변수(Parameter)로 받은 숫자(a, b)를 sign으로 받은 연산을 통해 해당하는 연산을 한 후 String 타입으로 변환합니다.
big.js 라이브러리를 통해 연산 후 round() 메서드를 통해 반올림하여 정수로 표현해 준 뒤 String 타입으로 변환합니다.
big.js 라이브러리로 연산하고 round(1)로 소수점 첫째 자리까지 표현 후 String으로 형변환합니다.
big.js 라이브러리로 연산하고 round(2)로 소수점 둘째 자리까지 표현 후 String으로 형변환합니다.
decimal.js-light 라이브러리 10진법 기반의 연산 라이브러리로 decimal.js 라이브러리의 가벼운 버전입니다. 매우 작거나 큰 값을 보다 효율적으로 처리하고, big.js 보다 높은 기준에 값을 저장 하므로 자릿수가 많은 값에 대한 작업을 수행할 때 속도 더 빠릅니다. 정밀도가 소수 자릿수 대신 decimal.js-light의 유효 숫자로 지정합니다.
new Decimal(1).times(2).toPrecision().toString();
생성자인 new Decimal을 통해 만든 수 ‘1’을 times() 메서드를 통해 ‘2’를 곱하는 연산을 한 후 toPrecision() 메서드를 이용해 정밀하게 표현한 후 toString으로 String으로 형변환합니다.
new Decimal(12.3).toPrecision(5); // '12.300'
string으로 반환하며, 유효 자릿수로 반올림합니다. Big 숫자 값의 자릿수가 지정된 것보다 적은 경우 반환 값에 ‘0’이 추가되어 반환합니다.
new Decimal을 통해 생성한 수를 plus(), minus(), times(), div()를 통해 연산하고 소수점 부분에 대한 별도의 처리없이 소수점을 전부 표현합니다.
decimal.js를 통해 숫자를 연산한 후 toInteger() 메서드를 이용해 정수로 변환한 후 String으로 형변환합니다.
decimal.js 라이브러리로 숫자를 연산한 후 toFixed() 메서드를 이용해 소수점 첫째 자리까지 나타냅니다.
decimal.js를 통해 연산 후 소수점 둘째 자리까지 표현합니다.
계산기 결과, JavaScript에서 아무 처리없이 계산한 경우는 대조군으로 실험군의 비교를 용이하게 하기위해 함께 조사하였습니다. 계산기 결과를 기준으로 할 것이므로 파란색으로 표현하였고, 계산기와 틀린 결과는 빨간색으로 표현 하였습니다.
각각의 조사는 연산 결과로 소수점을 모두 표현하는 경우, 소수점 첫째자리까지 표현하는 경우, 소수점 둘째자리까지 표현한 경우, 정수로 표현하는 경우입니다.
| 숫자 단위 | 계산식 | 계산기 | js | 자체 해결 | big.js | decimal.js-light |
|---|---|---|---|---|---|---|
| 일 | 0.1+0.2 | 0.3 | 0.30000000000000004 | 0.3 | 0.3 | 0.3 |
| 일 | 0.28*14 | 3.92 | 3.9200000000000004 | 3.92 | 3.92 | 3.92 |
| 일 | 0.1*87 | 8.7 | 8.700000000000001 | 8.7 | 8.7 | 8.7 |
| 백억 | 4674.569*7474757 | 34,941,267,354.733 | 34941267354.733 | 34941267354.733 | 34941267354.733 | 34941267354.733 |
| 조 | 767565.568*6775675 | 5,200,774,829,958.4 | 5200774829958.399 | 5200774829958.4 | 5200774829958.4 | 5200774829958.4 |
| 천만 | 239281.121*244 | 58,384,593.524 | 58384593.524000004 | 58384593.524 | 58384593.524 | 58384593.524 |
| 천억 | 498581.244*751411 | 374,639,431,135.284 | 374639431135.284 | 374639431135.284 | 374639431135.284 | 374639431135.284 |
| 천 | 234.234*23 | 5,387.382 | 5387.3820000000005 | 5387.382 | 5387.382 | 5387.382 |
| 백만 | 4533.1*355 | 1,609,250.5 | 1609250.5000000002 | 1609250.5 | 1609250.5 | 1609250.5 |
| 천만 | 345313.877*49 | 16,920,379.973 | 16920379.972999997 | 16920379.973 | 16920379.973 | 16920379.973 |
| 십억 | 37485.34*34777 | 1,303,627,669.18 | 1303627669.1799998 | 1303627669.18 | 1303627669.18 | 1303627669.18 |
| 억 | 2421.55*64529 | 156,260,199.95 | 156260199.95000002 | 156260199.95 | 156260199.95 | 156260199.95 |
| 백만 | 87291.127*20 | 1,745,822.54 | 1745822.5399999998 | 1745822.54 | 1745822.54 | 1745822.54 |
| 천만 | 93971.589*729 | 68,505,288.381 | 68505288.38100001 | 68505288.381 | 68505288.381 | 68505288.381 |
| 백만 | 8291.798*522 | 4,328,318.556 | 4328318.556000001 | 4328318.556000001 | 4328318.556 | 4328318.556 |
| 십억 | 727191.32*2801423 | 2,037,170,489,248.36 | 2037170489248.3599 | 2037170489248.3599 | 2037170489248.36 | 2037170489248.36 |
| 십억 | 8381.1*919209 | 7,703,982,549.9 | 7703982549.900001 | 7703982549.9 | 7703982549.9 | 7703982549.9 |
| 십억 | 920123.977*2918 | 2,684,921,764.886 | 2684921764.8859997 | 2684921764.886 | 2684921764.886 | 2684921764.886 |
| 천억 | 92384.618*4914731 | 454,045,546,007.758 | 454045546007.758 | 454045546007.758 | 454045546007.758 | 454045546007.758 |
| 십억 | 2919723.996*999 | 2,916,804,272.004 | 2916804272.0039997 | 2916804272.004 | 2916804272.004 | 2916804272.004 |
| 십억 | 819842.376*1929 | 1,581,475,943.304 | 1581475943.3040001 | 1581475943.304 | 1581475943.304 | 1581475943.304 |
| 백억 | 828394.348*46134 | 38,217,144,850.632 | 38217144850.631996 | 38217144850.632 | 38217144850.632 | 38217144850.632 |
| 천만 | 28012.129*2394 | 67,061,036.826 | 67061036.826000005 | 67061036.826 | 67061036.826 | 67061036.826 |
| 억 | 81923.188*1920 | 157,292,520.96 | 157292520.95999998 | 157292520.96 | 157292520.96 | 157292520.96 |
| 억 | 238129.219*2989 | 711,768,235.591 | 711768235.5910001 | 711768235.591 | 711768235.591 | 711768235.591 |
| 십억 | 951947.349*1838 | 1,749,679,227.462 | 1749679227.4620001 | 1749679227.462 | 1749679227.462 | 1749679227.462 |
| 천억 | 4737123.001*92389 | 437,658,056,939.389 | 437658056939.38904 | 437658056939.389 | 437658056939.389 | 437658056939.389 |
| 천조 | 567567.568*5675567657 | 3,221,268,132,102,948.176 | 3221268132102948 | 3221268132102948.5 | 3221268132102948.176 | 3221268132102948.176 |
| 일 | 0.3-0.1 | 0.2 | 0.19999999999999998 | 0.2 | 0.2 | 0.2 |
| 백억 | 4918493.431-19293851121 | -19,288,932,627.569 | -19288932627.569 | -19288932627.569 | -19288932627.569 | -19288932627.569 |
| 천만 | 3284.829-89126410.23 | -89,123,125.401 | -89123125.40100001 | -89123125.401 | -89123125.401 | -89123125.401 |
| 십 | 2938471.213/123234.315 | 23.8445859256 | 23.84458592560035 | 23.844585925600345 | 23.84458592560034922091 | 23.84458592560034922 |
| 십만 | 281645.234-983234 | -701,588.766 | -701588.7660000001 | -701588.766 | -701588.766 | -701588.766 |
| 억 | 23849.429*-39425.2 | -940,268,508.2108 | -940268508.2107999 | -940268508.2108 | -940268508.2108 | -940268508.2108 |
| 억 | 381293.328*1239 | 472,422,433.392 | 472422433.39199996 | 472422433.392 | 472422433.392 | 472422433.392 |
| 일 | 0.28+0.14 | 0.42 | 0.42000000000000004 | 0.42 | 0.42 | 0.42 |
| 천 | 2341313.809/2123 | 1,102.8326938295 | 1102.8326938294865 | 1102.8326938294863 | 1102.83269382948657560057 | 1102.8326938294865756 |
| 만 | 34901.939-81232.30 | -46,330.361 | -46330.361000000004 | -46330.361 | -46330.361 | -46330.361 |
| 백 | 919394002.329/2931340.2 | 313.6428867345 | 313.64288673453865 | 313.64288673453865 | 313.6428867345386932571 | 313.64288673453869325 |
| 십 | 38.9+42.08 | 80.98 | 80.97999999999999 | 80.98 | 80.98 | 80.98 |
| 백 | 128.28+10.14 | 138.42 | 138.42000000000002 | 138.42 | 138.42 | 138.42 |
| 십억 | 3913423411340.1/1234.2341 | 3,170,730,262.0630074 | 3170730262.063008 | 3170730262.0630074 | 3170730262.06300733385992171177 | 3170730262.0630073338 |
| 천 | 29381.3/3 | 9,793.7666666667 | 9793.766666666666 | 9793.766666666666 | 9793.76666666666666666667 | 9793.7666666666666666 |
| 십만 | 410923.231-0.12 | 410,923.111 | 410923.11100000003 | 410923.111 | 410923.111 | 410923.111 |
| 백 | 12839.302-13294 | -454.698 | -454.6980000000003 | -454.698 | -454.698 | -454.698 |
| 백 | (1300*(700/4000)) | 227.5 | 227.49999999999997 | 227.5 | 227.5 | 227.5 |
| 백억 | 18482839424.887-21.3 | 18,482,839,403.587 | 18482839403.587 | 18482839403.587 | 18482839403.587000000 | 18482839403.58700000 |
| 백억 | 78193947130.129-29.1 | 78,193,947,101.029 | 78193947101.02899 | 78193947101.029 | 78193947101.029000000 | 78193947101.02900000 |
| 천억 | 820818341235.73-12.6 | 820,818,341,223.13 | 820818341223.13 | 820818341223.13 | 820818341223.13000000 | 820818341223.1300000 |
| 천억 | 923971405723.11+2.9 | 923,971,405,726.01 | 923971405726.01 | 923971405726.01 | 923971405726.01000000 | 923971405726.0100000 |
| 조 | 1818293923481.139-22.1 | 1818293923459.039 | 1818293923459.0388 | 1818293923459.039 | 1818293923459.0390000 | 1818293923459.039000 |
| 조 | 7238491929383.12+12.001 | 7238491929395.121 | 7238491929395.121 | 7238491929395.121 | 7238491929395.1210000 | 7238491929395.121000 |
| 십조 | 34442312353404.29-9.1 | 34442312353395.19 | 34442312353395.188 | 34442312353395.188 | 34442312353395.190000 | 34442312353395.19000 |
| 십조 | 63841928356381.72+3.5 | 63841928356385.22 | 63841928356385.22 | 63841928356385.22 | 63841928356385.220000 | 63841928356385.22000 |
| 백조 | 245163552541345.42-2.3 | 245163552541343.12 | 245163552541343.1 | 245163552541343.1 | 245163552541343.10000 | 245163552541343.1000 |
| 백조 | 712384918238481.82-1.5 | 712384918238480.32 | 712384918238480.4 | 712384918238480.4 | 712384918238480.40000 | 712384918238480.4000 |
| 천조 | 3858182384858273.731-13.2 | 3858182384858260.531 | 3858182384858260.5 | 3858182384858260 | 3858182384858260.3000 | 3858182384858260.300 |
| 천조 | 8237193570128429.872-0.22 | 8237193570128429.652 | 8237193570128430 | 8237193570128430 | 8237193570128430.2200 | 8237193570128430.220 |
| 천조 | 7741233947451238.142+8 | 7741233947451246.142 | 7741233947451246 | 7741233947451247 | 7741233947451246.0000 | 7741233947451246.000 |
| 천조 | 8819384782378482.204+9 | 8819384782378491.204 | 8819384782378491 | 8819384782378491 | 8819384782378491.0000 | 8819384782378491.000 |
| 천조 | 9007199254740991.09+2.111 | 9007199254740993.201 | 9007199254740994 | 9007199254740994 | 9007199254740993.1110 | 9007199254740993.111 |
| 천조 | 9820129392394923.731+2 | 9820129392394925.731 | 9820129392394926 | 9820129392394926 | 9820129392394926.0000 | 9820129392394926.000 |
| 경 | 98347519485498555.82+3.001 | 98347519485498558.821 | 98347519485498560 | 98347519485498560 | 98347519485498563.001 | 98347519485498563.00 |
| 경 | 12383574812093234.22+5.072 | 12383574812093239.292 | 12383574812093240 | 12383574812093238 | 12383574812093239.072 | 12383574812093239.07 |
| 경 | 82871198272712738.89-7.113 | 82871198272712731.777 | 82871198272712740 | 82871198272712740 | 82871198272712732.887 | 82871198272712732.89 |
| 경 | 46192982100923718-1.8 | 46192982100923716.2 | 46192982100923720 | 46192982100923720 | 46192982100923718.200 | 46192982100923718.20 |
| 숫자 단위 | 계산식 | 계산기 | js-소수 둘째 자리 | 자체 해결-소수 둘째 자리 | big.js-소수 둘째 자리 | decimal.js-light-소수 둘째 자리 |
|---|---|---|---|---|---|---|
| 일 | 0.1+0.2 | 0.3 | 0.30 | 0.30 | 0.3 | 0.30 |
| 일 | 0.28*14 | 3.92 | 3.92 | 3.92 | 3.92 | 3.92 |
| 일 | 0.1*87 | 8.7 | 8.70 | 8.70 | 8.7 | 8.70 |
| 백억 | 4674.569*7474757 | 34,941,267,354.73 | 34941267354.73 | 34941267354.73 | 34941267354.73 | 34941267354.73 |
| 조 | 767565.568*6775675 | 5,200,774,829,958.4 | 5200774829958.40 | 5200774829958.40 | 5200774829958.4 | 5200774829958.40 |
| 천만 | 239281.121*244 | 58,384,593.52 | 58384593.52 | 58384593.52 | 58384593.52 | 58384593.52 |
| 천억 | 498581.244*751411 | 374,639,431,135.28 | 374639431135.28 | 374639431135.28 | 374639431135.28 | 374639431135.28 |
| 천 | 234.234*23 | 5,387.38 | 5387.38 | 5387.38 | 5387.38 | 5387.38 |
| 백만 | 4533.1*355 | 1,609,250.5 | 1609250.50 | 1609250.50 | 1609250.5 | 1609250.50 |
| 천만 | 345313.877*49 | 16,920,379.97 | 16920379.97 | 16920379.97 | 16920379.97 | 16920379.97 |
| 십억 | 37485.34*34777 | 1,303,627,669.18 | 1303627669.18 | 1303627669.18 | 1303627669.18 | 1303627669.18 |
| 억 | 2421.55*64529 | 156,260,199.95 | 156260199.95 | 156260199.95 | 156260199.95 | 156260199.95 |
| 백만 | 87291.127*20 | 1,745,822.54 | 1745822.54 | 1745822.54 | 1745822.54 | 1745822.54 |
| 천만 | 93971.589*729 | 68,505,288.38 | 68505288.38 | 68505288.38 | 68505288.38 | 68505288.38 |
| 백만 | 8291.798*522 | 4,328,318.56 | 4328318.56 | 4328318.56 | 4328318.56 | 4328318.56 |
| 십억 | 727191.32*2801423 | 2,037,170,489,248.36 | 2037170489248.36 | 2037170489248.36 | 2037170489248.36 | 2037170489248.36 |
| 십억 | 8381.1*919209 | 7,703,982,549.9 | 7703982549.90 | 7703982549.90 | 7703982549.9 | 7703982549.90 |
| 십억 | 920123.977*2918 | 2,684,921,764.89 | 2684921764.89 | 2684921764.89 | 2684921764.89 | 2684921764.89 |
| 천억 | 92384.618*4914731 | 454,045,546,007.76 | 454045546007.76 | 454045546007.76 | 454045546007.76 | 454045546007.76 |
| 십억 | 2919723.996*999 | 2,916,804,272.00 | 2916804272.00 | 2916804272.00 | 2916804272 | 2916804272.00 |
| 십억 | 819842.376*1929 | 1,581,475,943.30 | 1581475943.30 | 1581475943.30 | 1581475943.3 | 1581475943.30 |
| 백억 | 828394.348*46134 | 38,217,144,850.63 | 38217144850.63 | 38217144850.63 | 38217144850.63 | 38217144850.63 |
| 천만 | 28012.129*2394 | 67,061,036.83 | 67061036.83 | 67061036.83 | 67061036.83 | 67061036.83 |
| 억 | 81923.188*1920 | 157,292,520.96 | 157292520.96 | 157292520.96 | 157292520.96 | 157292520.96 |
| 억 | 238129.219*2989 | 711,768,235.59 | 711768235.59 | 711768235.59 | 711768235.59 | 711768235.59 |
| 십억 | 951947.349*1838 | 1,749,679,227.46 | 1749679227.46 | 1749679227.46 | 1749679227.46 | 1749679227.46 |
| 천억 | 4737123.001*92389 | 437,658,056,939.39 | 437658056939.39 | 437658056939.39 | 437658056939.39 | 437658056939.39 |
| 천조 | 567567.568*5675567657 | 3,221,268,132,102,948.18 | 3221268132102948.0 | 3221268132102948.50 | 3221268132102948.18 | 3221268132102948.18 |
| 일 | 0.3-0.1 | 0.2 | 0.20 | 0.20 | 0.2 | 0.20 |
| 백억 | 4918493.431-19293851121 | -19,288,932,627.57 | -19288932627.57 | -19288932627.57 | -19288932627.57 | -19288932627.57 |
| 천만 | 3284.829-89126410.23 | -89,123,125.40 | -89123125.40 | -89123125.40 | -89123125.4 | -89123125.40 |
| 십 | 2938471.213/123234.315 | 23.84 | 23.84 | 23.84 | 23.84 | 23.84 |
| 십만 | 281645.234-983234 | -701,588.77 | -701588.77 | -701588.77 | -701588.77 | -701588.77 |
| 억 | 23849.429*-39425.2 | -940,268,508.21 | -940268508.21 | -940268508.21 | -940268508.21 | -940268508.21 |
| 억 | 381293.328*1239 | 472,422,433.39 | 472422433.39 | 472422433.39 | 472422433.39 | 472422433.39 |
| 일 | 0.28+0.14 | 0.42 | 0.42 | 0.42 | 0.42 | 0.42 |
| 천 | 2341313.809/2123 | 1,102.83 | 1102.83 | 1102.83 | 1102.83 | 1102.83 |
| 만 | 34901.939-81232.30 | -46,330.36 | -46330.36 | -46330.36 | -46330.36 | -46330.36 |
| 백 | 919394002.329/2931340.2 | 313.64 | 313.64 | 313.64 | 313.64 | 313.64 |
| 십 | 38.9+42.08 | 80.98 | 80.98 | 80.98 | 80.98 | 80.98 |
| 백 | 128.28+10.14 | 138.42 | 138.42 | 138.42 | 138.42 | 138.42 |
| 십억 | 3913423411340.1/1234.2341 | 3,170,730,262.06 | 3170730262.06 | 3170730262.06 | 3170730262.06 | 3170730262.06 |
| 천 | 29381.3/3 | 9,793.77 | 9793.77 | 9793.77 | 9793.77 | 9793.77 |
| 십만 | 410923.231-0.12 | 410,923.11 | 410923.11 | 410923.11 | 410923.11 | 410923.11 |
| 백 | 12839.302-13294 | -454.70 | -454.70 | -454.70 | -454.7 | -454.70 |
| 백 | (1300*(700/4000)) | 227.5 | 227.5 | 227.5 | 227.5 | 227.5 |
| 백억 | 18482839424.887-21.3 | 18,482,839,403.59 | 18482839403.59 | 18482839403.59 | 18482839403.59 | 18482839403.59 |
| 백억 | 78193947130.129-29.1 | 78,193,947,101.03 | 78193947101.03 | 78193947101.03 | 78193947101.03 | 78193947101.03 |
| 천억 | 820818341235.73-12.6 | 820,818,341,223.13 | 820818341223.13 | 820818341223.13 | 820818341223.13 | 820818341223.13 |
| 천억 | 923971405723.11+2.9 | 923,971,405,726.01 | 923971405726.01 | 923971405726.01 | 923971405726.01 | 923971405726.01 |
| 조 | 1818293923481.139-22.1 | 1818293923459.04 | 1818293923459.04 | 1818293923459.04 | 1818293923459.04 | 1818293923459.04 |
| 조 | 7238491929383.12+12.001 | 7238491929395.12 | 7238491929395.12 | 7238491929395.12 | 7238491929395.12 | 7238491929395.12 |
| 십조 | 34442312353404.29-9.1 | 34442312353395.19 | 34442312353395.19 | 34442312353395.19 | 34442312353395.19 | 34442312353395.19 |
| 십조 | 63841928356381.72+3.5 | 63841928356385.22 | 63841928356385.22 | 63841928356385.22 | 63841928356385.22 | 63841928356385.22 |
| 백조 | 245163552541345.42-2.3 | 245163552541343.12 | 245163552541343.09 | 245163552541343.09 | 245163552541343.1 | 245163552541343.10 |
| 백조 | 712384918238481.82-1.5 | 712384918238480.32 | 712384918238480.38 | 712384918238480.38 | 712384918238480.4 | 712384918238480.40 |
| 천조 | 3858182384858273.731-13.2 | 3858182384858260.53 | 3858182384858260.50 | 3858182384858260.00 | 3858182384858260.3 | 3858182384858260.30 |
| 천조 | 8237193570128429.872-0.22 | 8237193570128429.65 | 8237193570128430.00 | 8237193570128430.00 | 8237193570128430.22 | 8237193570128430.22 |
| 천조 | 7741233947451238.142+8 | 7741233947451246.14 | 7741233947451246.00 | 7741233947451247.00 | 7741233947451246 | 7741233947451246.00 |
| 천조 | 8819384782378482.204+9 | 8819384782378491.20 | 8819384782378491.00 | 8819384782378491.00 | 8819384782378491 | 8819384782378491.00 |
| 천조 | 9007199254740991.09+2.111 | 9007199254740993.20 | 9007199254740994.00 | 9007199254740994.00 | 9007199254740993.11 | 9007199254740993.11 |
| 천조 | 9820129392394923.731+2 | 9820129392394925.73 | 9820129392394926.00 | 9820129392394926.00 | 9820129392394926 | 9820129392394926.00 |
| 경 | 98347519485498555.82+3.001 | 98347519485498558.82 | 98347519485498560.00 | 98347519485498560.00 | 98347519485498563 | 98347519485498563.00 |
| 경 | 12383574812093234.22+5.072 | 12383574812093239.29 | 12383574812093240.00 | 12383574812093238.00 | 12383574812093239.07 | 12383574812093239.07 |
| 경 | 82871198272712738.89-7.113 | 82871198272712731.78 | 82871198272712736.00 | 82871198272712736.00 | 82871198272712732.89 | 82871198272712732.89 |
| 경 | 46192982100923718-1.8 | 46192982100923716.2 | 46192982100923720.00 | 46192982100923720.00 | 46192982100923718.2 | 46192982100923718.20 |
| input | 계산기 | js-소수 첫째 자리 | 자체 해결-소수 첫째 자리 | big.js-소수 첫째 자리 | decimal.js-light-소수 첫째 자리 | |
|---|---|---|---|---|---|---|
| 일 | 0.1+0.2 | 0.3 | 0.3 | 0.3 | 0.3 | 0.3 |
| 일 | 0.28*14 | 3.9 | 3.9 | 3.9 | 3.9 | 3.9 |
| 일 | 0.1*87 | 8.7 | 8.7 | 8.7 | 8.7 | 8.7 |
| 백억 | 4674.569*7474757 | 34,941,267,354.7 | 34941267354.7 | 34941267354.7 | 34941267354.7 | 34941267354.7 |
| 조 | 767565.568*6775675 | 5,200,774,829,958.4 | 5200774829958.4 | 5200774829958.4 | 5200774829958.4 | 5200774829958.4 |
| 천만 | 239281.121*244 | 58,384,593.524 | 58384593.5 | 58384593.5 | 58384593.5 | 58384593.5 |
| 천억 | 498581.244*751411 | 374,639,431,135.3 | 374639431135.3 | 374639431135.3 | 374639431135.3 | 374639431135.3 |
| 천 | 234.234*23 | 5,387.4 | 5387.4 | 5387.4 | 5387.4 | 5387.4 |
| 백만 | 4533.1*355 | 1,609,250.5 | 1609250.5 | 1609250.5 | 1609250.5 | 1609250.5 |
| 천만 | 345313.877*49 | 16,920,380.0 | 16920380.0 | 16920380.0 | 16920380 | 16920380.0 |
| 십억 | 37485.34*34777 | 1,303,627,669.2 | 1303627669.2 | 1303627669.2 | 1303627669.2 | 1303627669.2 |
| 억 | 2421.55*64529 | 156,260,200.0 | 156260200.0 | 156260199.9 | 156260200 | 156260200.0 |
| 백만 | 87291.127*20 | 1,745,822.5 | 1745822.5 | 1745822.5 | 1745822.5 | 1745822.5 |
| 천만 | 93971.589*729 | 68,505,288.4 | 68505288.4 | 68505288.4 | 68505288.4 | 68505288.4 |
| 백만 | 8291.798*522 | 4,328,318.6 | 4328318.6 | 4328318.6 | 4328318.6 | 4328318.6 |
| 십억 | 727191.32*2801423 | 2,037,170,489,248.4 | 2037170489248.4 | 2037170489248.4 | 2037170489248.4 | 2037170489248.4 |
| 십억 | 8381.1*919209 | 7,703,982,549.9 | 7703982549.9 | 7703982549.9 | 7703982549.9 | 7703982549.9 |
| 십억 | 920123.977*2918 | 2,684,921,764.9 | 2684921764.9 | 2684921764.9 | 2684921764.9 | 2684921764.9 |
| 천억 | 92384.618*4914731 | 454,045,546,007.8 | 454045546007.8 | 454045546007.8 | 454045546007.8 | 454045546007.8 |
| 십억 | 2919723.996*999 | 2,916,804,272.0 | 2916804272.0 | 2916804272.0 | 2916804272 | 2916804272.0 |
| 십억 | 819842.376*1929 | 1,581,475,943.3 | 1581475943.3 | 1581475943.3 | 1581475943.3 | 1581475943.3 |
| 백억 | 828394.348*46134 | 38,217,144,850.6 | 38217144850.6 | 38217144850.6 | 38217144850.6 | 38217144850.6 |
| 천만 | 28012.129*2394 | 67,061,036.8 | 67061036.8 | 67061036.8 | 67061036.8 | 67061036.8 |
| 억 | 81923.188*1920 | 157,292,521.0 | 157292521.0 | 157292521.0 | 157292521 | 157292521.0 |
| 억 | 238129.219*2989 | 711,768,235.6 | 711768235.6 | 711768235.6 | 711768235.6 | 711768235.6 |
| 십억 | 951947.349*1838 | 1,749,679,227.5 | 1749679227.5 | 1749679227.5 | 1749679227.5 | 1749679227.5 |
| 천억 | 4737123.001*92389 | 437,658,056,939.4 | 437658056939.4 | 437658056939.4 | 437658056939.4 | 437658056939.4 |
| 천조 | 567567.568*567556,657 | 3,221,268,132,102,948.2 | 3221268132102948.0 | 3221268132102948.5 | 3221268132102948.2 | 3221268132102948.2 |
| 일 | 0.3-0.1 | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 |
| 백억 | 4918493.431-19293851121 | -19,288,932,627.6 | -19288932627.6 | -19288932627.6 | -19288932627.6 | -19288932627.6 |
| 천만 | 3284.829-89126410.23 | -89,123,125.4 | -89123125.4 | -89123125.4 | -89123125.4 | -89123125.4 |
| 십 | 2938471.213/123234.315 | 23.8 | 23.8 | 23.8 | 23.8 | 23.8 |
| 십만 | 281645.234-983234 | -701,588.8 | -701588.8 | -701588.8 | -701588.8 | -701588.8 |
| 억 | 23849.429*-39425.2 | -940,268,508.2 | -940268508.2 | -940268508.2 | -940268508.2 | -940268508.2 |
| 억 | 381293.328*1239 | 472,422,433.4 | 472422433.4 | 472422433.4 | 472422433.4 | 472422433.4 |
| 일 | 0.28+0.14 | 0.4 | 0.4 | 0.4 | 0.4 | 0.4 |
| 천 | 2341313.809/2123 | 1,102.8 | 1102.8 | 1102.8 | 1102.8 | 1102.8 |
| 만 | 34901.939-81232.30 | -46,330.4 | -46330.4 | -46330.4 | -46330.4 | -46330.4 |
| 백 | 919394002.329/2931340.2 | 313.6 | 313.6 | 313.6 | 313.6 | 313.6 |
| 십 | 38.9+42.08 | 81.0 | 81.0 | 81.0 | 81 | 81.0 |
| 백 | 128.28+10.14 | 138.4 | 138.4 | 138.4 | 138.4 | 138.4 |
| 십억 | 3913423411340.1/1234.2341 | 3,170,730,262.1 | 3170730262.1 | 3170730262.1 | 3170730262.1 | 3170730262.1 |
| 천 | 29381.3/3 | 9,793.8 | 9793.8 | 9793.8 | 9793.8 | 9793.8 |
| 십만 | 410923.231-0.12 | 410,923.1 | 410923.1 | 410923.1 | 410923.1 | 410923.1 |
| 백 | 12839.302-13294 | -454.7 | -454.7 | -454.7 | -454.7 | -454.7 |
| 백 | (1300*(700/4000)) | 227.5 | 227.5 | 227.5 | 227.5 | 227.5 |
| 백억 | 18482839424.887-21.3 | 18,482,839,403.6 | 18482839403.6 | 18482839403.6 | 18482839403.6 | 18482839403.6 |
| 백억 | 78193947130.129-29.1 | 78,193,947,101.0 | 78193947101.0 | 78193947101.0 | 78193947101 | 78193947101.0 |
| 천억 | 820818341235.73-12.6 | 820,818,341,223.1 | 820818341223.1 | 820818341223.1 | 820818341223.1 | 820818341223.1 |
| 천억 | 923971405723.11+2.9 | 923,971,405,726.0 | 923971405726.0 | 923971405726.0 | 923971405726 | 923971405726.0 |
| 조 | 1818293923481.139-22.1 | 1818293923459.0 | 1818293923459.0 | 1818293923459.0 | 1818293923459 | 1818293923459.0 |
| 조 | 7238491929383.12+12.001 | 7238491929395.1 | 7238491929395.1 | 7238491929395.1 | 7238491929395.1 | 7238491929395.1 |
| 십조 | 34442312353404.29-9.1 | 34442312353395.2 | 34442312353395.2 | 34442312353395.2 | 34442312353395.2 | 34442312353395.2 |
| 십조 | 63841928356381.72+3.5 | 63841928356385.2 | 63841928356385.2 | 63841928356385.2 | 63841928356385.2 | 63841928356385.2 |
| 백조 | 245163552541345.42-2.3 | 245163552541343.1 | 245163552541343.1 | 245163552541343.1 | 245163552541343.1 | 245163552541343.1 |
| 백조 | 712384918238481.82-1.5 | 712384918238480.3 | 712384918238480.4 | 712384918238480.4 | 712384918238480.4 | 712384918238480.4 |
| 천조 | 3858182384858273.731-13.2 | 3858182384858260.5 | 3858182384858260.5 | 3858182384858260.0 | 3858182384858260.3 | 3858182384858260.3 |
| 천조 | 8237193570128429.872-0.22 | 8237193570128429.7 | 8237193570128430.0 | 8237193570128430.0 | 8237193570128430.2 | 8237193570128430.2 |
| 천조 | 7741233947451238.142+8 | 7741233947451246.1 | 7741233947451246.0 | 7741233947451247.0 | 7741233947451246 | 7741233947451246.0 |
| 천조 | 8819384782378482.204+9 | 8819384782378491.2 | 8819384782378491.0 | 8819384782378491.0 | 8819384782378491 | 8819384782378491.0 |
| 천조 | 9007199254740991.09+2.111 | 9007199254740993.2 | 9007199254740994.0 | 9007199254740994.0 | 9007199254740993.1 | 9007199254740993.1 |
| 천조 | 9820129392394923.731+2 | 9820129392394925.7 | 9820129392394926.0 | 9820129392394926.0 | 9820129392394926 | 9820129392394926.0 |
| 경 | 98347519485498555.82+3.001 | 98347519485498558.8 | 98347519485498560.0 | 98347519485498560.0 | 98347519485498563 | 98347519485498563.0 |
| 경 | 12383574812093234.22+5.072 | 12383574812093239.3 | 12383574812093240.0 | 12383574812093238.0 | 12383574812093239.1 | 12383574812093239.1 |
| 경 | 82871198272712738.89-7.113 | 82871198272712731.8 | 82871198272712736.0 | 82871198272712736.0 | 82871198272712732.9 | 82871198272712732.9 |
| 경 | 46192982100923718-1.8 | 46192982100923716.2 | 46192982100923720.0 | 46192982100923720.0 | 46192982100923718.2 | 46192982100923718.2 |
| 숫자 단위 | 계산식 | 계산기 | js-정수 | 자체 해결-정수 | big.js-정수 | decimal.js-light-정수 |
|---|---|---|---|---|---|---|
| 일 | 0.1+0.2 | 0 | 0 | 0 | 0 | 0 |
| 일 | 0.28*14 | 4 | 4 | 4 | 4 | 4 |
| 일 | 0.1*87 | 9 | 9 | 9 | 9 | 9 |
| 백억 | 4674.569*7474757 | 34,941,267,355 | 34941267355 | 34941267355 | 34941267355 | 34941267355 |
| 조 | 767565.568*6775675 | 5,200,774,829,958 | 5200774829958 | 5200774829958 | 5200774829958 | 5200774829958 |
| 천만 | 239281.121*244 | 58,384,594 | 58384594 | 58384594 | 58384594 | 58384594 |
| 천억 | 498581.244*751411 | 374,639,431,135 | 374639431135 | 374639431135 | 374639431135 | 374639431135 |
| 천 | 234.234*23 | 5,387 | 5387 | 5387 | 5387 | 5387 |
| 백만 | 4533.1*355 | 1,609,251 | 1609251 | 1609251 | 1609251 | 1609251 |