diff --git a/100_core/src/gplx/Decimal_adp__tst.java b/100_core/src/gplx/Decimal_adp__tst.java index 5ee584dc8..e45393b38 100644 --- a/100_core/src/gplx/Decimal_adp__tst.java +++ b/100_core/src/gplx/Decimal_adp__tst.java @@ -16,7 +16,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt package gplx; import org.junit.*; public class Decimal_adp__tst { - private final Decimal_adp__fxt fxt = new Decimal_adp__fxt(); + private final Decimal_adp__fxt fxt = new Decimal_adp__fxt(); @Test public void divide_() { fxt.Test_divide(1, 1000, "0.001"); fxt.Test_divide(1, 3, "0.33333333333333"); @@ -37,6 +37,7 @@ public class Decimal_adp__tst { fxt.Test_parse("1", "1"); fxt.Test_parse("1.2", "1.2"); fxt.Test_parse("0.1", "0.1"); + fxt.Test_parse("1.2E1", "12"); } @Test public void Truncate_decimal() { fxt.Test_truncate_decimal("1", "1"); diff --git a/400_xowa/src/gplx/langs/jsons/Json_itm_decimal.java b/400_xowa/src/gplx/langs/jsons/Json_itm_decimal.java index 8da5c8475..8b6921c4a 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_itm_decimal.java +++ b/400_xowa/src/gplx/langs/jsons/Json_itm_decimal.java @@ -24,8 +24,11 @@ public class Json_itm_decimal extends Json_itm_base { return data_bry; } public Decimal_adp Data_as_decimal() { - if (data == null) - data = Decimal_adp_.parse(String_.new_a7(this.Data_bry())); + if (data == null) { + String s = String_.new_a7(this.Data_bry()); + s = String_.Replace(s, "e", "E"); // exponent can be either "e" or "E" in JSON, but Java decimal parse only takes "E"; ISSUE#:565; DATE:2020-03-25 + data = Decimal_adp_.parse(s); + } return data; } @Override public void Print_as_json(Bry_bfr bfr, int depth) {bfr.Add_mid(doc.Src(), this.Src_bgn(), this.Src_end());} diff --git a/400_xowa/src/gplx/langs/jsons/Json_kv_ary_srl_tst.java b/400_xowa/src/gplx/langs/jsons/Json_kv_ary_srl_tst.java index 8e553e078..92278b632 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_kv_ary_srl_tst.java +++ b/400_xowa/src/gplx/langs/jsons/Json_kv_ary_srl_tst.java @@ -20,6 +20,7 @@ public class Json_kv_ary_srl_tst { @Test public void Null() {fxt.Test_parse("{'k0':null}" , fxt.ary_(fxt.kv_str_("k0", null)));} @Test public void Bool_n() {fxt.Test_parse("{'k0':false}" , fxt.ary_(fxt.kv_bool_("k0", false)));} @Test public void Num() {fxt.Test_parse("{'k0':123}" , fxt.ary_(fxt.kv_int_("k0", 123)));} + @Test public void Num_exp() {fxt.Test_parse("{'k0':1.23e2}" , fxt.ary_(fxt.kv_int_("k0", 123)));} // exponent can be either "e" or "E" in JSON, but Java decimal parse only takes "E"; ISSUE#:565; DATE:2020-03-25 @Test public void Str() {fxt.Test_parse("{'k0':'v0'}" , fxt.ary_(fxt.kv_str_("k0", "v0")));} @Test public void Num_dec() {fxt.Test_parse("{'k0':1.23}" , fxt.ary_(fxt.kv_dec_("k0", Decimal_adp_.parse("1.23"))));} @Test public void Ary_int() {fxt.Test_parse("{'k0':[1,2,3]}" , fxt.ary_(fxt.kv_obj_("k0", fxt.ary_(fxt.kv_int_("1", 1), fxt.kv_int_("2", 2), fxt.kv_int_("3", 3)))));}