{"id":5380,"date":"2021-09-27T09:06:36","date_gmt":"2021-09-27T08:06:36","guid":{"rendered":"https:\/\/solidt.eu\/site\/?p=5380"},"modified":"2025-01-09T13:30:38","modified_gmt":"2025-01-09T12:30:38","slug":"abbreviate-numbers","status":"publish","type":"post","link":"https:\/\/solidt.eu\/site\/abbreviate-numbers\/","title":{"rendered":"Abbreviate numbers (Shorten numbers)"},"content":{"rendered":"\n<p>Source: <a href=\"https:\/\/stackoverflow.com\/a\/40724354\">https:\/\/stackoverflow.com\/a\/40724354<\/a><\/p>\n\n\n\n<p>For formatting \/ displaying large numbers (e.g. likes, views)<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">const SI_SYMBOL = [\"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\"];\n\nfunction abbreviateNumber(number){\n    \/\/ what tier? (determines SI symbol)\n    const tier = Math.log10(Math.abs(number)) \/ 3 | 0;\n\n    \/\/ if zero, we don't need a suffix\n    if(tier == 0) return number;\n\n    \/\/ get suffix and determine scale\n    const suffix = SI_SYMBOL[tier];\n    const scale = 10 ** (tier * 3);\n\n    \/\/ scale the number\n    const scaled = number \/ scale;\n\n    \/\/ format number and add suffix\n    return scaled.toFixed(1) + suffix;\n}<\/pre>\n\n\n\n<p>Source: <a href=\"https:\/\/stackoverflow.com\/a\/60988355\">https:\/\/stackoverflow.com\/a\/60988355<\/a><\/p>\n\n\n\n<p>ES2020 adds support for this in <code>Intl.NumberFormat<\/code> Using notation as follows:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">let formatter = Intl.NumberFormat('en', { notation: 'compact' });\n\/\/ example 1\nlet million = formatter.format(1e6);\n\/\/ example 2\nlet billion = formatter.format(1e9);\n\/\/ print\nconsole.log(million == '1M', billion == '1B');<\/pre>\n\n\n\n<p>C#<\/p>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"csharp\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"false\">    private static readonly string[] SI_SYMBOL = { \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\" };\n\n\n    public static string AbbreviateNumber(double number)\n    {\n        \/\/ Controleer op ongeldige getallen\n        if (double.IsNaN(number)) return \"NaN\";\n        if (double.IsInfinity(number)) return number > 0 ? \"\u221e\" : \"-\u221e\";\n\n        \/\/ Controleer of het getal nul is\n        if (number == 0) return \"0\";\n\n        \/\/ Wat is de tier? (bepaalt SI-symbool)\n        int tier = (int)(Math.Log10(Math.Abs(number)) \/ 3);\n\n        \/\/ Als tier 0 is, geen suffix nodig\n        if (tier == 0) return number.ToString();\n\n        \/\/ Beperk tier tot beschikbare SI-symbolen\n        tier = Math.Min(tier, SI_SYMBOL.Length - 1);\n\n        \/\/ Haal het suffix op en bepaal de schaal\n        string suffix = SI_SYMBOL[tier];\n        double scale = Math.Pow(10, tier * 3);\n\n        \/\/ Schaal het getal\n        double scaled = number \/ scale;\n\n        \/\/ Formatteer het getal en voeg suffix toe\n        return $\"{scaled:F1}{suffix}\";\n    }<\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Source: https:\/\/stackoverflow.com\/a\/40724354 For formatting \/ displaying large numbers (e.g. likes, views) Source: https:\/\/stackoverflow.com\/a\/60988355 ES2020 adds support for this in Intl.NumberFormat Using notation as follows: C#<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5380","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/5380","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/comments?post=5380"}],"version-history":[{"count":3,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/5380\/revisions"}],"predecessor-version":[{"id":9207,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/5380\/revisions\/9207"}],"wp:attachment":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/media?parent=5380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/categories?post=5380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/tags?post=5380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}