[{"data":1,"prerenderedAt":731},["ShallowReactive",2],{"navigation-en":3,"page-\u002Fapi\u002Fconfig":78,"surround-\u002Fapi\u002Fconfig":726},[4,26,56],{"title":5,"path":6,"stem":7,"children":8},"Introduction","\u002Fguide","1.guide\u002F1.index",[9,10,14,18,22],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Getting Started","\u002Fguide\u002Fgetting-started","1.guide\u002F2.getting-started",{"title":15,"path":16,"stem":17},"Number Formatting","\u002Fguide\u002Fformat-tokens","1.guide\u002F3.format-tokens",{"title":19,"path":20,"stem":21},"Performance","\u002Fguide\u002Fperformance","1.guide\u002F4.performance",{"title":23,"path":24,"stem":25},"Caveats","\u002Fguide\u002Fcaveats","1.guide\u002F5.caveats",{"title":27,"path":28,"stem":29,"children":30},"API Overview","\u002Fapi","2.api\u002F0.index",[31,32,36,40,44,48,52],{"title":27,"path":28,"stem":29},{"title":33,"path":34,"stem":35},"calc()","\u002Fapi\u002Fcalc","2.api\u002F1.calc",{"title":37,"path":38,"stem":39},"fmt()","\u002Fapi\u002Ffmt","2.api\u002F2.fmt",{"title":41,"path":42,"stem":43},"Chain API","\u002Fapi\u002Fchain","2.api\u002F3.chain",{"title":45,"path":46,"stem":47},"Standalone Functions","\u002Fapi\u002Fstandalone","2.api\u002F4.standalone",{"title":49,"path":50,"stem":51},"Aggregation","\u002Fapi\u002Faggregate","2.api\u002F5.aggregate",{"title":53,"path":54,"stem":55},"Global Config","\u002Fapi\u002Fconfig","2.api\u002F6.config",{"title":57,"path":58,"stem":59,"children":60},"Examples Overview","\u002Fexamples","3.examples\u002F0.index",[61,62,66,70,74],{"title":57,"path":58,"stem":59},{"title":63,"path":64,"stem":65},"Precision Loss","\u002Fexamples\u002Fprecision-loss","3.examples\u002F1.precision-loss",{"title":67,"path":68,"stem":69},"E-commerce","\u002Fexamples\u002Fecommerce","3.examples\u002F2.ecommerce",{"title":71,"path":72,"stem":73},"Complex Expressions","\u002Fexamples\u002Fcomplex","3.examples\u002F3.complex",{"title":75,"path":76,"stem":77},"Currency Conversion","\u002Fexamples\u002Fcurrency","3.examples\u002F4.currency",{"id":79,"title":53,"body":80,"description":720,"extension":721,"meta":722,"navigation":122,"path":54,"seo":724,"stem":55,"__hash__":725},"content_en\u002F2.api\u002F6.config.md",{"type":81,"value":82,"toc":713},"minimark",[83,87,208,213,362,366,377,417,421,424,471,628,635,646,681,688,709],[84,85,53],"h1",{"id":86},"global-config",[88,89,94],"pre",{"className":90,"code":91,"language":92,"meta":93,"style":93},"language-ts shiki shiki-themes github-light github-light github-dark","import { getConfig, resetConfig, setConfig } from '@wzo\u002Fcalc'\n\ninterface IGlobalConfig {\n    _error: string | number \u002F\u002F fmt error fallback value, default '-' (only used by fmt; calc etc. throw on error)\n    _fmt?: IFormat \u002F\u002F global default format (IFormat object), none by default\n    _compact_default: string \u002F\u002F default compact preset, default ''\n    _precision: number \u002F\u002F division precision, default 50\n}\n","ts","",[95,96,97,117,124,137,161,176,189,202],"code",{"__ignoreMap":93},[98,99,102,106,110,113],"span",{"class":100,"line":101},"line",1,[98,103,105],{"class":104},"s8jYJ","import",[98,107,109],{"class":108},"sxrX7"," { getConfig, resetConfig, setConfig } ",[98,111,112],{"class":104},"from",[98,114,116],{"class":115},"sIIMD"," '@wzo\u002Fcalc'\n",[98,118,120],{"class":100,"line":119},2,[98,121,123],{"emptyLinePlaceholder":122},true,"\n",[98,125,127,130,134],{"class":100,"line":126},3,[98,128,129],{"class":104},"interface",[98,131,133],{"class":132},"snPdu"," IGlobalConfig",[98,135,136],{"class":108}," {\n",[98,138,140,144,147,151,154,157],{"class":100,"line":139},4,[98,141,143],{"class":142},"sP4rz","    _error",[98,145,146],{"class":104},":",[98,148,150],{"class":149},"sBjJW"," string",[98,152,153],{"class":104}," |",[98,155,156],{"class":149}," number",[98,158,160],{"class":159},"sCsY4"," \u002F\u002F fmt error fallback value, default '-' (only used by fmt; calc etc. throw on error)\n",[98,162,164,167,170,173],{"class":100,"line":163},5,[98,165,166],{"class":142},"    _fmt",[98,168,169],{"class":104},"?:",[98,171,172],{"class":132}," IFormat",[98,174,175],{"class":159}," \u002F\u002F global default format (IFormat object), none by default\n",[98,177,179,182,184,186],{"class":100,"line":178},6,[98,180,181],{"class":142},"    _compact_default",[98,183,146],{"class":104},[98,185,150],{"class":149},[98,187,188],{"class":159}," \u002F\u002F default compact preset, default ''\n",[98,190,192,195,197,199],{"class":100,"line":191},7,[98,193,194],{"class":142},"    _precision",[98,196,146],{"class":104},[98,198,156],{"class":149},[98,200,201],{"class":159}," \u002F\u002F division precision, default 50\n",[98,203,205],{"class":100,"line":204},8,[98,206,207],{"class":108},"}\n",[209,210,212],"h2",{"id":211},"usage","Usage",[88,214,216],{"className":90,"code":215,"language":92,"meta":93,"style":93},"\u002F\u002F fmt returns 0 instead of '-' on error (_error only affects fmt)\nsetConfig({ _error: 0 })\nfmt('a + b') \u002F\u002F 0 (b is undefined)\n\n\u002F\u002F global default: 2 decimal places + thousands separator\nsetConfig({ _fmt: { decimals: 2, thousands: true } })\ncalc('1000 + 234') \u002F\u002F \"1,234.00\"\n\n\u002F\u002F increase division precision\nsetConfig({ _precision: 100 })\ndivStr('1', '3') \u002F\u002F 0.333... to 100 digits\n\n\u002F\u002F reset everything\nresetConfig()\n",[95,217,218,223,237,254,258,263,282,297,301,307,320,342,347,353],{"__ignoreMap":93},[98,219,220],{"class":100,"line":101},[98,221,222],{"class":159},"\u002F\u002F fmt returns 0 instead of '-' on error (_error only affects fmt)\n",[98,224,225,228,231,234],{"class":100,"line":119},[98,226,227],{"class":132},"setConfig",[98,229,230],{"class":108},"({ _error: ",[98,232,233],{"class":149},"0",[98,235,236],{"class":108}," })\n",[98,238,239,242,245,248,251],{"class":100,"line":126},[98,240,241],{"class":132},"fmt",[98,243,244],{"class":108},"(",[98,246,247],{"class":115},"'a + b'",[98,249,250],{"class":108},") ",[98,252,253],{"class":159},"\u002F\u002F 0 (b is undefined)\n",[98,255,256],{"class":100,"line":139},[98,257,123],{"emptyLinePlaceholder":122},[98,259,260],{"class":100,"line":163},[98,261,262],{"class":159},"\u002F\u002F global default: 2 decimal places + thousands separator\n",[98,264,265,267,270,273,276,279],{"class":100,"line":178},[98,266,227],{"class":132},[98,268,269],{"class":108},"({ _fmt: { decimals: ",[98,271,272],{"class":149},"2",[98,274,275],{"class":108},", thousands: ",[98,277,278],{"class":149},"true",[98,280,281],{"class":108}," } })\n",[98,283,284,287,289,292,294],{"class":100,"line":191},[98,285,286],{"class":132},"calc",[98,288,244],{"class":108},[98,290,291],{"class":115},"'1000 + 234'",[98,293,250],{"class":108},[98,295,296],{"class":159},"\u002F\u002F \"1,234.00\"\n",[98,298,299],{"class":100,"line":204},[98,300,123],{"emptyLinePlaceholder":122},[98,302,304],{"class":100,"line":303},9,[98,305,306],{"class":159},"\u002F\u002F increase division precision\n",[98,308,310,312,315,318],{"class":100,"line":309},10,[98,311,227],{"class":132},[98,313,314],{"class":108},"({ _precision: ",[98,316,317],{"class":149},"100",[98,319,236],{"class":108},[98,321,323,326,328,331,334,337,339],{"class":100,"line":322},11,[98,324,325],{"class":132},"divStr",[98,327,244],{"class":108},[98,329,330],{"class":115},"'1'",[98,332,333],{"class":108},", ",[98,335,336],{"class":115},"'3'",[98,338,250],{"class":108},[98,340,341],{"class":159},"\u002F\u002F 0.333... to 100 digits\n",[98,343,345],{"class":100,"line":344},12,[98,346,123],{"emptyLinePlaceholder":122},[98,348,350],{"class":100,"line":349},13,[98,351,352],{"class":159},"\u002F\u002F reset everything\n",[98,354,356,359],{"class":100,"line":355},14,[98,357,358],{"class":132},"resetConfig",[98,360,361],{"class":108},"()\n",[209,363,365],{"id":364},"try-it-live","Try It Live",[367,368,369],"blockquote",{},[370,371,372,373,376],"p",{},"Remember to call ",[95,374,375],{},"resetConfig()"," after changing the global config, otherwise it will affect other Playgrounds on this page.",[378,379,380],"calc-playground",{},[88,381,383],{"className":90,"code":382,"language":92,"meta":93,"style":93},"setConfig({ _fmt: { decimals: 2, thousands: true } })\ncalc('1000 + 234') \u002F\u002F \"1,234.00\"\nresetConfig()\n",[95,384,385,399,411],{"__ignoreMap":93},[98,386,387,389,391,393,395,397],{"class":100,"line":101},[98,388,227],{"class":132},[98,390,269],{"class":108},[98,392,272],{"class":149},[98,394,275],{"class":108},[98,396,278],{"class":149},[98,398,281],{"class":108},[98,400,401,403,405,407,409],{"class":100,"line":119},[98,402,286],{"class":132},[98,404,244],{"class":108},[98,406,291],{"class":115},[98,408,250],{"class":108},[98,410,296],{"class":159},[98,412,413,415],{"class":100,"line":126},[98,414,358],{"class":132},[98,416,361],{"class":108},[209,418,420],{"id":419},"per-call-override","Per-call Override",[370,422,423],{},"Local options take priority over global config — override a single call without touching globals:",[425,426,427,447],"ul",{},[428,429,430,432,433,333,436,438,439,432,441,438,444],"li",{},[95,431,241],{},"'s ",[95,434,435],{},"_error",[95,437,286],{}," \u002F ",[95,440,241],{},[95,442,443],{},"_fmt",[95,445,446],{},"_precision",[428,448,449,450,438,453,438,455,438,458,461,462,465,466,470],{},"Division \u002F average: ",[95,451,452],{},"div",[95,454,325],{},[95,456,457],{},"chainDiv",[95,459,460],{},"calcAvg"," accept ",[95,463,464],{},"{ _precision }"," as a ",[467,468,469],"strong",{},"trailing"," argument to override precision for that call only (no global side effects)",[88,472,474],{"className":90,"code":473,"language":92,"meta":93,"style":93},"setConfig({ _error: '-' })\nfmt('1\u002F0') \u002F\u002F \"-\"\nfmt('1\u002F0', { _error: 'ERR' }) \u002F\u002F \"ERR\"  ← per-call override\n\n\u002F\u002F division \u002F average: trailing { _precision } sets precision for that call only\ndivStr('100', '3', { _precision: 5 }) \u002F\u002F \"33.33333\"\ndiv(100, 3, { _precision: 2 }) \u002F\u002F 33.33\ncalcAvg([10, 20, 25], { _precision: 2 }) \u002F\u002F \"18.33\"\nchainDiv(100, 3, { _precision: 5 })() \u002F\u002F \"33.33333\"  ← precision applies to the whole chain's division\n",[95,475,476,487,501,521,525,530,554,576,606],{"__ignoreMap":93},[98,477,478,480,482,485],{"class":100,"line":101},[98,479,227],{"class":132},[98,481,230],{"class":108},[98,483,484],{"class":115},"'-'",[98,486,236],{"class":108},[98,488,489,491,493,496,498],{"class":100,"line":119},[98,490,241],{"class":132},[98,492,244],{"class":108},[98,494,495],{"class":115},"'1\u002F0'",[98,497,250],{"class":108},[98,499,500],{"class":159},"\u002F\u002F \"-\"\n",[98,502,503,505,507,509,512,515,518],{"class":100,"line":126},[98,504,241],{"class":132},[98,506,244],{"class":108},[98,508,495],{"class":115},[98,510,511],{"class":108},", { _error: ",[98,513,514],{"class":115},"'ERR'",[98,516,517],{"class":108}," }) ",[98,519,520],{"class":159},"\u002F\u002F \"ERR\"  ← per-call override\n",[98,522,523],{"class":100,"line":139},[98,524,123],{"emptyLinePlaceholder":122},[98,526,527],{"class":100,"line":163},[98,528,529],{"class":159},"\u002F\u002F division \u002F average: trailing { _precision } sets precision for that call only\n",[98,531,532,534,536,539,541,543,546,549,551],{"class":100,"line":178},[98,533,325],{"class":132},[98,535,244],{"class":108},[98,537,538],{"class":115},"'100'",[98,540,333],{"class":108},[98,542,336],{"class":115},[98,544,545],{"class":108},", { _precision: ",[98,547,548],{"class":149},"5",[98,550,517],{"class":108},[98,552,553],{"class":159},"\u002F\u002F \"33.33333\"\n",[98,555,556,558,560,562,564,567,569,571,573],{"class":100,"line":191},[98,557,452],{"class":132},[98,559,244],{"class":108},[98,561,317],{"class":149},[98,563,333],{"class":108},[98,565,566],{"class":149},"3",[98,568,545],{"class":108},[98,570,272],{"class":149},[98,572,517],{"class":108},[98,574,575],{"class":159},"\u002F\u002F 33.33\n",[98,577,578,580,583,586,588,591,593,596,599,601,603],{"class":100,"line":204},[98,579,460],{"class":132},[98,581,582],{"class":108},"([",[98,584,585],{"class":149},"10",[98,587,333],{"class":108},[98,589,590],{"class":149},"20",[98,592,333],{"class":108},[98,594,595],{"class":149},"25",[98,597,598],{"class":108},"], { _precision: ",[98,600,272],{"class":149},[98,602,517],{"class":108},[98,604,605],{"class":159},"\u002F\u002F \"18.33\"\n",[98,607,608,610,612,614,616,618,620,622,625],{"class":100,"line":303},[98,609,457],{"class":132},[98,611,244],{"class":108},[98,613,317],{"class":149},[98,615,333],{"class":108},[98,617,566],{"class":149},[98,619,545],{"class":108},[98,621,548],{"class":149},[98,623,624],{"class":108}," })() ",[98,626,627],{"class":159},"\u002F\u002F \"33.33333\"  ← precision applies to the whole chain's division\n",[209,629,631,632,634],{"id":630},"app-wide-config-setconfig","App-wide Config (",[95,633,227],{},")",[370,636,637,638,641,642,645],{},"Apply a single config for your entire application — call it once, as ",[467,639,640],{},"early as possible"," in your entry point (",[95,643,644],{},"main.ts","):",[88,647,649],{"className":90,"code":648,"filename":644,"language":92,"meta":93,"style":93},"import { setConfig } from '@wzo\u002Fcalc'\nsetConfig({ _error: 0, _fmt: { decimals: 2, thousands: true } })\n",[95,650,651,662],{"__ignoreMap":93},[98,652,653,655,658,660],{"class":100,"line":101},[98,654,105],{"class":104},[98,656,657],{"class":108}," { setConfig } ",[98,659,112],{"class":104},[98,661,116],{"class":115},[98,663,664,666,668,670,673,675,677,679],{"class":100,"line":119},[98,665,227],{"class":132},[98,667,230],{"class":108},[98,669,233],{"class":149},[98,671,672],{"class":108},", _fmt: { decimals: ",[98,674,272],{"class":149},[98,676,275],{"class":108},[98,678,278],{"class":149},[98,680,281],{"class":108},[370,682,683,684,687],{},"After that, any ",[95,685,686],{},"import { fmt } from '@wzo\u002Fcalc'"," anywhere in the app will use this config.",[689,690,692],"callout",{"type":691},"warning",[370,693,694,696,697,700,701,438,703,705,706,708],{},[95,695,227],{}," is a ",[467,698,699],{},"global singleton",": it must run before any ",[95,702,286],{},[95,704,241],{}," call, otherwise that call will use the default values. If you only need to override precision for a single division or average, use the per-call ",[95,707,464],{}," approach described above — there is no need to modify the global config.",[710,711,712],"style",{},"html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sP4rz, html code.shiki .sP4rz{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":93,"searchDepth":119,"depth":119,"links":714},[715,716,717,718],{"id":211,"depth":119,"text":212},{"id":364,"depth":119,"text":365},{"id":419,"depth":119,"text":420},{"id":630,"depth":119,"text":719},"App-wide Config (setConfig)","setConfig \u002F resetConfig — global error fallback \u002F default format \u002F precision.","md",{"icon":723},"i-lucide-settings",{"title":53,"description":720},"fCRi5-OS-Zma4z3c7gS0shxdHKNzqVB-Z2F15hrJsEM",[727,729],{"title":49,"path":50,"stem":51,"description":728,"children":-1},"calcSum \u002F calcAvg \u002F calcMedian \u002F calcMax \u002F calcMin — array aggregation.",{"title":57,"path":58,"stem":59,"description":730,"children":-1},"Real-world examples for @wzo\u002Fcalc.",1783414279191]