{"id":3205,"date":"2016-02-25T22:19:34","date_gmt":"2016-02-25T22:19:34","guid":{"rendered":"http:\/\/www.garysieling.com\/blog\/?p=3205"},"modified":"2016-02-25T22:19:34","modified_gmt":"2016-02-25T22:19:34","slug":"postgres-significant-figures-pg_size_pretty","status":"publish","type":"post","link":"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/","title":{"rendered":"Rounding to significant figures in Postgres"},"content":{"rendered":"<p>If you want to round numbers to a specified number of significant figures, you can do this with the logarithm functions.<\/p>\n<p>For example, rounding the following numbers to two digits would do the following:<\/p>\n<pre>\n10;10\n15;15\n105;100\n109;100\n997;990\n105050;100000\n123456;120000\n193456;190000\n<\/pre>\n<p>Here is the SQL &#8211; note the &#8220;-1&#8221; needs to be off by one from how many digits you want: -1 gives you two digits.<\/p>\n<pre lang=\"sql\">\nwith test as (\n  select 10 val\n  union all select 15\n  union all select 105\n  union all select 109\n  union all select 997\n  union all select 105050\n  union all select 123456\n  union all select 193456\n)\nselect \ncontent_size,\nfloor(val\/\n     (10 ^ floor(log(val)-1))) * \n  (10 ^ floor(log(val)-1))\nfrom test\n<\/pre>\n<p>If you want to use this with pg_size_pretty you&#8217;ll also need to cast it:<\/p>\n<pre lang=\"sql\">\nwith test as (\n  select 10 val\n  union all select 15\n  union all select 105\n  union all select 109\n  union all select 997\n  union all select 105050\n  union all select 123456\n  union all select 193456\n)\nselect \n  content_size,\n  pg_size_pretty(\n    (floor(content_size \/\n     (10 ^ floor(log(val)-1))) * \n    (10 ^ floor(log(val)-1)))::bigint)\nfrom test\n<\/pre>\n<p>This would give you:<\/p>\n<pre>\n10;\"10 bytes\"\n15;\"15 bytes\"\n105;\"100 bytes\"\n109;\"100 bytes\"\n997;\"990 bytes\"\n105050;\"98 kB\"\n123456;\"117 kB\"\n193456;\"186 kB\"\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>If you want to round numbers to a specified number of significant figures, you can do this with the logarithm functions. For example, rounding the following numbers to two digits would do the following: 10;10 15;15 105;100 109;100 997;990 105050;100000 123456;120000 193456;190000 Here is the SQL &#8211; note the &#8220;-1&#8221; needs to be off by &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Rounding to significant figures in Postgres&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[4],"tags":[437,523],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"If you want to round numbers to a specified number of significant figures, you can do this with the logarithm functions. For example, rounding the following numbers to two digits would do the following: 10;10 15;15 105;100 109;100 997;990 105050;100000 123456;120000 193456;190000 Here is the SQL - note the &quot;-1&quot; needs to be off by\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"gary\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Gary Sieling - Software Engineer\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Rounding to significant figures in Postgres - Gary Sieling\" \/>\n\t\t<meta property=\"og:description\" content=\"If you want to round numbers to a specified number of significant figures, you can do this with the logarithm functions. For example, rounding the following numbers to two digits would do the following: 10;10 15;15 105;100 109;100 997;990 105050;100000 123456;120000 193456;190000 Here is the SQL - note the &quot;-1&quot; needs to be off by\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2016-02-25T22:19:34+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2016-02-25T22:19:34+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Rounding to significant figures in Postgres - Gary Sieling\" \/>\n\t\t<meta name=\"twitter:description\" content=\"If you want to round numbers to a specified number of significant figures, you can do this with the logarithm functions. For example, rounding the following numbers to two digits would do the following: 10;10 15;15 105;100 109;100 997;990 105050;100000 123456;120000 193456;190000 Here is the SQL - note the &quot;-1&quot; needs to be off by\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/postgres-significant-figures-pg_size_pretty\\\/#blogposting\",\"name\":\"Rounding to significant figures in Postgres - Gary Sieling\",\"headline\":\"Rounding to significant figures in Postgres\",\"author\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#organization\"},\"datePublished\":\"2016-02-25T22:19:34+00:00\",\"dateModified\":\"2016-02-25T22:19:34+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/postgres-significant-figures-pg_size_pretty\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/postgres-significant-figures-pg_size_pretty\\\/#webpage\"},\"articleSection\":\"Code Examples, postgres, sql\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/postgres-significant-figures-pg_size_pretty\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.garysieling.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/category\\\/code-examples\\\/#listItem\",\"name\":\"Code Examples\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/category\\\/code-examples\\\/#listItem\",\"position\":2,\"name\":\"Code Examples\",\"item\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/category\\\/code-examples\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/postgres-significant-figures-pg_size_pretty\\\/#listItem\",\"name\":\"Rounding to significant figures in Postgres\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/postgres-significant-figures-pg_size_pretty\\\/#listItem\",\"position\":3,\"name\":\"Rounding to significant figures in Postgres\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/category\\\/code-examples\\\/#listItem\",\"name\":\"Code Examples\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#organization\",\"name\":\"Gary Sieling\",\"description\":\"Software Engineer\",\"url\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/#author\",\"url\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/\",\"name\":\"gary\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/postgres-significant-figures-pg_size_pretty\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0be925276d848ffe98a6a9dc8cf33e67?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"gary\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/postgres-significant-figures-pg_size_pretty\\\/#webpage\",\"url\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/postgres-significant-figures-pg_size_pretty\\\/\",\"name\":\"Rounding to significant figures in Postgres - Gary Sieling\",\"description\":\"If you want to round numbers to a specified number of significant figures, you can do this with the logarithm functions. For example, rounding the following numbers to two digits would do the following: 10;10 15;15 105;100 109;100 997;990 105050;100000 123456;120000 193456;190000 Here is the SQL - note the \\\"-1\\\" needs to be off by\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/postgres-significant-figures-pg_size_pretty\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/#author\"},\"datePublished\":\"2016-02-25T22:19:34+00:00\",\"dateModified\":\"2016-02-25T22:19:34+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/\",\"name\":\"Gary Sieling\",\"description\":\"Software Engineer\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Rounding to significant figures in Postgres - Gary Sieling","description":"If you want to round numbers to a specified number of significant figures, you can do this with the logarithm functions. For example, rounding the following numbers to two digits would do the following: 10;10 15;15 105;100 109;100 997;990 105050;100000 123456;120000 193456;190000 Here is the SQL - note the \"-1\" needs to be off by","canonical_url":"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/#blogposting","name":"Rounding to significant figures in Postgres - Gary Sieling","headline":"Rounding to significant figures in Postgres","author":{"@id":"https:\/\/www.garysieling.com\/blog\/author\/gary\/#author"},"publisher":{"@id":"https:\/\/www.garysieling.com\/blog\/#organization"},"datePublished":"2016-02-25T22:19:34+00:00","dateModified":"2016-02-25T22:19:34+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/#webpage"},"isPartOf":{"@id":"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/#webpage"},"articleSection":"Code Examples, postgres, sql"},{"@type":"BreadcrumbList","@id":"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.garysieling.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/#listItem","name":"Code Examples"}},{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/#listItem","position":2,"name":"Code Examples","item":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/#listItem","name":"Rounding to significant figures in Postgres"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/#listItem","position":3,"name":"Rounding to significant figures in Postgres","previousItem":{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/#listItem","name":"Code Examples"}}]},{"@type":"Organization","@id":"https:\/\/www.garysieling.com\/blog\/#organization","name":"Gary Sieling","description":"Software Engineer","url":"https:\/\/www.garysieling.com\/blog\/"},{"@type":"Person","@id":"https:\/\/www.garysieling.com\/blog\/author\/gary\/#author","url":"https:\/\/www.garysieling.com\/blog\/author\/gary\/","name":"gary","image":{"@type":"ImageObject","@id":"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/0be925276d848ffe98a6a9dc8cf33e67?s=96&d=identicon&r=g","width":96,"height":96,"caption":"gary"}},{"@type":"WebPage","@id":"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/#webpage","url":"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/","name":"Rounding to significant figures in Postgres - Gary Sieling","description":"If you want to round numbers to a specified number of significant figures, you can do this with the logarithm functions. For example, rounding the following numbers to two digits would do the following: 10;10 15;15 105;100 109;100 997;990 105050;100000 123456;120000 193456;190000 Here is the SQL - note the \"-1\" needs to be off by","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.garysieling.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/#breadcrumblist"},"author":{"@id":"https:\/\/www.garysieling.com\/blog\/author\/gary\/#author"},"creator":{"@id":"https:\/\/www.garysieling.com\/blog\/author\/gary\/#author"},"datePublished":"2016-02-25T22:19:34+00:00","dateModified":"2016-02-25T22:19:34+00:00"},{"@type":"WebSite","@id":"https:\/\/www.garysieling.com\/blog\/#website","url":"https:\/\/www.garysieling.com\/blog\/","name":"Gary Sieling","description":"Software Engineer","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.garysieling.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Gary Sieling - Software Engineer","og:type":"article","og:title":"Rounding to significant figures in Postgres - Gary Sieling","og:description":"If you want to round numbers to a specified number of significant figures, you can do this with the logarithm functions. For example, rounding the following numbers to two digits would do the following: 10;10 15;15 105;100 109;100 997;990 105050;100000 123456;120000 193456;190000 Here is the SQL - note the &quot;-1&quot; needs to be off by","og:url":"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/","article:published_time":"2016-02-25T22:19:34+00:00","article:modified_time":"2016-02-25T22:19:34+00:00","twitter:card":"summary_large_image","twitter:title":"Rounding to significant figures in Postgres - Gary Sieling","twitter:description":"If you want to round numbers to a specified number of significant figures, you can do this with the logarithm functions. For example, rounding the following numbers to two digits would do the following: 10;10 15;15 105;100 109;100 997;990 105050;100000 123456;120000 193456;190000 Here is the SQL - note the &quot;-1&quot; needs to be off by"},"aioseo_meta_data":{"post_id":"3205","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2023-02-04 16:38:31","updated":"2026-07-06 01:29:36","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.garysieling.com\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/\" title=\"Code Examples\">Code Examples<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tRounding to significant figures in Postgres\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.garysieling.com\/blog"},{"label":"Code Examples","link":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/"},{"label":"Rounding to significant figures in Postgres","link":"https:\/\/www.garysieling.com\/blog\/postgres-significant-figures-pg_size_pretty\/"}],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts\/3205"}],"collection":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/comments?post=3205"}],"version-history":[{"count":0,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts\/3205\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/media?parent=3205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/categories?post=3205"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/tags?post=3205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}