{"id":14284,"date":"2022-10-07T05:00:43","date_gmt":"2022-10-06T23:30:43","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/"},"modified":"2022-10-07T05:00:43","modified_gmt":"2022-10-06T23:30:43","slug":"solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/","title":{"rendered":"[Solved] How do I truncate the significand of a floating point number to an arbitrary precision in Java? [duplicate]"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-48727425\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"48727425\" data-parentid=\"48727424\" data-score=\"0\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>Suppose <code>x<\/code> is the number you wish to reduce the precision of and <code>bits<\/code> is the number of significant bits you wish to retain.<\/p>\n<p>When <code>bits<\/code> is sufficiently large and the order of magnitude of <code>x<\/code> is sufficiently close to 0, then <code>x * (1L &lt;&lt; (bits - Math.getExponent(x)))<\/code> will scale <code>x<\/code> so that the bits that need to be removed will appear in the fractional component (after the radix point) while the bits that will be retained will appear in the integer component (before the radix point). You can then round this to remove the fractional component and then divide the rounded number by <code>(1L &lt;&lt; (bits - Math.getExponent(x)))<\/code> to restore the order of magnitude of <code>x<\/code>, i.e.:<\/p>\n<pre class=\"lang-java prettyprint-override\"><code>public static double reducePrecision(double x, int bits) {\n    int exponent = bits - Math.getExponent(x);\n    return Math.round(x * (1L &lt;&lt; exponent)) \/ (1L &lt;&lt; exponent);\n}\n<\/code><\/pre>\n<p>However, <code>(1L &lt;&lt; exponent)<\/code> will break down when <code>Math.getExponent(x) &gt; bits || Math.getExponent(x) &lt; bits - 62<\/code>. The solution is to use <code>Math.pow(2, exponent)<\/code> (or the fast <code>pow2(exponent)<\/code> implementation from this answer) to calculate a fractional, or a very large, power of 2, i.e.:<\/p>\n<pre class=\"lang-java prettyprint-override\"><code>public static double reducePrecision(double x, int bits) {\n    int exponent = bits - Math.getExponent(x);\n    return Math.round(x * Math.pow(2, exponent)) * Math.pow(2, -exponent);\n}\n<\/code><\/pre>\n<p>However, <code>Math.pow(2, exponent)<\/code> will break down as <code>exponent<\/code> approaches -1074 or +1023. The solution is to use <code>Math.scalb(x, exponent)<\/code> so that the power of 2 doesn&#8217;t have to be explicitly calculated, i.e.:<\/p>\n<pre class=\"lang-java prettyprint-override\"><code>public static double reducePrecision(double x, int bits) {\n    int exponent = bits - Math.getExponent(x);\n    return Math.scalb(Math.round(Math.scalb(x, exponent)), -exponent);\n}\n<\/code><\/pre>\n<p>However, <code>Math.round(y)<\/code> returns a <code>long<\/code> so it does not preserve <code>Infinity<\/code>, <code>NaN<\/code>, and cases where <code>Math.abs(x) &gt; Long.MAX_VALUE \/ Math.pow(2, exponent)<\/code>. Furthermore, <code>Math.round(y)<\/code> always rounds ties to positive infinity (e.g. <code>Math.round(0.5) == 1 &amp;&amp; Math.round(1.5) == 2<\/code>). The solution is to use <code>Math.rint(y)<\/code> to receive a <code>double<\/code> and preserve the unbiased IEEE 754 round-to-nearest, ties-to-even rule (e.g. <code>Math.rint(0.5) == 0.0 &amp;&amp; Math.rint(1.5) == 2.0<\/code>), i.e.:<\/p>\n<pre class=\"lang-java prettyprint-override\"><code>public static double reducePrecision(double x, int bits) {\n    int exponent = bits - Math.getExponent(x);\n    return Math.scalb(Math.rint(Math.scalb(x, exponent)), -exponent);\n}\n<\/code><\/pre>\n<p>Finally, here is a unit test confirming our expectations:<\/p>\n<pre class=\"lang-java prettyprint-override\"><code>public static String decompose(double d) {\n    int SIGN_WIDTH = 1;\n    int EXP_WIDTH = 11;\n    int SIGNIFICAND_WIDTH = 53;\n    String s = String.format(\"%64s\", Long.toBinaryString(Double.doubleToRawLongBits(d))).replace(' ', '0');\n    return s.substring(0, 0 + SIGN_WIDTH) + \" \"\n            + s.substring(0 + SIGN_WIDTH, 0 + SIGN_WIDTH + EXP_WIDTH) + \" \"\n            + s.substring(0 + SIGN_WIDTH + EXP_WIDTH, 0 + SIGN_WIDTH + EXP_WIDTH + SIGNIFICAND_WIDTH - 1);\n}\n\npublic static void test() {\n    \/\/ Use a fixed seed so the generated numbers are reproducible.\n    java.util.Random r = new java.util.Random(0);\n\n    \/\/ Generate a floating point number that makes use of its full 52 bits of significand precision.\n    double a = r.nextDouble() * 100;\n    System.out.println(decompose(a) + \" \" + a);\n    Assert.assertFalse(decompose(a).split(\" \")[2].substring(23).equals(String.format(\"%0\" + (52 - 23) + \"d\", 0)));\n\n    \/\/ Cast the double to a float to produce a \"ground truth\" of precision loss to compare against.\n    double b = (float) a;\n    System.out.println(decompose(b) + \" \" + b);\n    Assert.assertTrue(decompose(b).split(\" \")[2].substring(23).equals(String.format(\"%0\" + (52 - 23) + \"d\", 0)));\n    \/\/ 32-bit float has a 23 bit significand, so c's bit pattern should be identical to b's bit pattern.\n    double c = reducePrecision(a, 23);\n    System.out.println(decompose(c) + \" \" + c);\n    Assert.assertTrue(b == c);\n\n    \/\/ 23rd-most significant bit in c is 1, so rounding it to the 22nd-most significant bit requires breaking a tie.\n    \/\/ Since 22nd-most significant bit in c is 0, d will be rounded down so that its 22nd-most significant bit remains 0.\n    double d = reducePrecision(c, 22);\n    System.out.println(decompose(d) + \" \" + d);\n    Assert.assertTrue(decompose(d).split(\" \")[2].substring(22).equals(String.format(\"%0\" + (52 - 22) + \"d\", 0)));\n    Assert.assertTrue(decompose(c).split(\" \")[2].charAt(22) == '1' &amp;&amp; decompose(c).split(\" \")[2].charAt(21) == '0');\n    Assert.assertTrue(decompose(d).split(\" \")[2].charAt(21) == '0');\n    \/\/ 21st-most significant bit in d is 1, so rounding it to the 20th-most significant bit requires breaking a tie.\n    \/\/ Since 20th-most significant bit in d is 1, e will be rounded up so that its 20th-most significant bit becomes 0.\n    double e = reducePrecision(c, 20);\n    System.out.println(decompose(e) + \" \" + e);\n    Assert.assertTrue(decompose(e).split(\" \")[2].substring(20).equals(String.format(\"%0\" + (52 - 20) + \"d\", 0)));\n    Assert.assertTrue(decompose(d).split(\" \")[2].charAt(20) == '1' &amp;&amp; decompose(d).split(\" \")[2].charAt(19) == '1');\n    Assert.assertTrue(decompose(e).split(\" \")[2].charAt(19) == '0');\n\n    \/\/ Reduce the precision of a number close to the largest normal number.\n    double f = reducePrecision(a * 0x1p+1017, 23);\n    System.out.println(decompose(f) + \" \" + f);\n    \/\/ Reduce the precision of a number close to the smallest normal number.\n    double g = reducePrecision(a * 0x1p-1028, 23);\n    System.out.println(decompose(g) + \" \" + g);\n    \/\/ Reduce the precision of a number close to the smallest subnormal number.\n    double h = reducePrecision(a * 0x1p-1051, 23);\n    System.out.println(decompose(h) + \" \" + h);\n}\n<\/code><\/pre>\n<p>And its output:<\/p>\n<pre class=\"lang-none prettyprint-override\"><code>0 10000000101 0010010001100011000110011111011100100100111000111011 73.0967787376657\n0 10000000101 0010010001100011000110100000000000000000000000000000 73.0967788696289\n0 10000000101 0010010001100011000110100000000000000000000000000000 73.0967788696289\n0 10000000101 0010010001100011000110000000000000000000000000000000 73.09677124023438\n0 10000000101 0010010001100011001000000000000000000000000000000000 73.0968017578125\n0 11111111110 0010010001100011000110100000000000000000000000000000 1.0266060746443803E308\n0 00000000001 0010010001100011000110100000000000000000000000000000 2.541339559435826E-308\n0 00000000000 0000000000000000000000100000000000000000000000000000 2.652494739E-315\n<\/code><\/pre>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\"><\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved How do I truncate the significand of a floating point number to an arbitrary precision in Java? [duplicate] <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Suppose x is the number you wish to reduce the precision of and bits is the number of significant bits you wish to retain. When bits is sufficiently large and the order of magnitude of x is sufficiently close to 0, then x * (1L &lt;&lt; (bits &#8211; Math.getExponent(x))) will scale x so that &#8230; <a title=\"[Solved] How do I truncate the significand of a floating point number to an arbitrary precision in Java? [duplicate]\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/\" aria-label=\"More on [Solved] How do I truncate the significand of a floating point number to an arbitrary precision in Java? [duplicate]\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[359,2832,323,1299],"class_list":["post-14284","post","type-post","status-publish","format-standard","hentry","category-solved","tag-floating-point","tag-ieee-754","tag-java","tag-precision"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] How do I truncate the significand of a floating point number to an arbitrary precision in Java? [duplicate] - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] How do I truncate the significand of a floating point number to an arbitrary precision in Java? [duplicate] - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Suppose x is the number you wish to reduce the precision of and bits is the number of significant bits you wish to retain. When bits is sufficiently large and the order of magnitude of x is sufficiently close to 0, then x * (1L &lt;&lt; (bits - Math.getExponent(x))) will scale x so that ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-06T23:30:43+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] How do I truncate the significand of a floating point number to an arbitrary precision in Java? [duplicate]\",\"datePublished\":\"2022-10-06T23:30:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/\"},\"wordCount\":249,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"floating-point\",\"ieee-754\",\"java\",\"precision\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/\",\"name\":\"[Solved] How do I truncate the significand of a floating point number to an arbitrary precision in Java? [duplicate] - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-10-06T23:30:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] How do I truncate the significand of a floating point number to an arbitrary precision in Java? [duplicate]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] How do I truncate the significand of a floating point number to an arbitrary precision in Java? [duplicate] - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] How do I truncate the significand of a floating point number to an arbitrary precision in Java? [duplicate] - JassWeb","og_description":"[ad_1] Suppose x is the number you wish to reduce the precision of and bits is the number of significant bits you wish to retain. When bits is sufficiently large and the order of magnitude of x is sufficiently close to 0, then x * (1L &lt;&lt; (bits - Math.getExponent(x))) will scale x so that ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/","og_site_name":"JassWeb","article_published_time":"2022-10-06T23:30:43+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] How do I truncate the significand of a floating point number to an arbitrary precision in Java? [duplicate]","datePublished":"2022-10-06T23:30:43+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/"},"wordCount":249,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["floating-point","ieee-754","java","precision"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/","url":"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/","name":"[Solved] How do I truncate the significand of a floating point number to an arbitrary precision in Java? [duplicate] - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-10-06T23:30:43+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-truncate-the-significand-of-a-floating-point-number-to-an-arbitrary-precision-in-java-duplicate\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] How do I truncate the significand of a floating point number to an arbitrary precision in Java? [duplicate]"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/14284","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=14284"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/14284\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=14284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=14284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=14284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}