首页 > 解决方案 > 是三元运算符问题还是 BigDecimal 问题?

问题描述

我想得到1190...的价格

public void test() {
        String s = "usdt_krw";
        BigDecimal b = BigDecimal.valueOf(1190.00000000);
        String[] split = s.split("_");

        System.out.println(split[0]);
        System.out.println(b.intValue());

        System.out.println(
                "first => " + Tests.builder()
                        .price(String.valueOf(
                                split[0].equals("usdt")
                                ? b.intValue()
                                : b.doubleValue()))
                        .build());

        System.out.println(
                "second => " + Tests.builder()
                .price(split[0].equals("usdt")
                        ? String.valueOf(b.intValue())
                        : String.valueOf(b.doubleValue()))
                .build());
}
usdt
1190
first => Tests(accountId=null, amount=null, price=1190.0, symbol=null, type=null)
second => Tests(accountId=null, amount=null, price=1190, symbol=null, type=null)

我认为第一个和第二个结果应该是一样的。

标签: java

解决方案


  • true ? 123 : 4.56将产生double123.0,平衡施法,123 施法加倍。
  • true ? "123" : "4.56" will yield a字符串“123”。

推荐阅读