标签: bigdecimal

将 BigDecimal 对象转换为双精度值

我正在使用 jdbc 连接查询数据库:

    List<Map<String, Object>> rows = jdbcTemplate.queryForList(SELECT_QUERY);   
    for(Map row : rows) {
        Results result = new Results();
        result.setResultValueDouble((Double)row.get("AMOUNT"));

        //add the data object to the list
        resultList.add(result);
    }
Run Code Online (Sandbox Code Playgroud)

但是,我查询的对象是 BigDecimal,我想将其转换为普通双精度。使用强制转换不起作用并给我一个ClassCastException.

有什么建议如何正确地投射这个对象吗?

感谢您的回复!

java double casting bigdecimal

-1
推荐指数
1
解决办法
1万
查看次数

如何检查BigDecimal是否均匀?

我一直试图实现这一段时间,而我似乎无法正确地做到这一点.任何帮助将不胜感激?

java bigdecimal

-2
推荐指数
1
解决办法
1600
查看次数

android api 16 中的 BigDecimal

我是 Android 新手,所以请解释一下,如何在 API 级别 16 中使用 BigDecimal,因为使用这一行:

BigDecimal currentNumber = new BigDecimal(String "0.0");
Run Code Online (Sandbox Code Playgroud)

导致错误,Call 需要 api 级别 24。

java android bigdecimal android-api-levels

-2
推荐指数
1
解决办法
2323
查看次数

Java BigDecimal的正确语法是什么?

我有两个double计数器,我根据某些标准递增.计数器将1或0.01递增,其结果归纳在一起的序列号1.00,1.01,1.02等,等我得到的结果1.01999999999或者1.111111111111,预期的状况:由于性质double.

我正在尝试使用BigDecimal,尽管Java文档指出

BigDecimal(double val)
           Translates a double into a BigDecimal which is the exact decimal representation of the double's binary floating-point value.
Run Code Online (Sandbox Code Playgroud)

我无法让代码工作.

            ....
if (condition1) {
    indexNo = indexNo + 1;
    subIndexNo = .00;
} else
    if (condition2) {
        subIndexNo = subIndexNo + .01;
    }
recNo = indexNo + subIndexNo;
BigDecimal record = BigDecimal(double recNo);
Run Code Online (Sandbox Code Playgroud)

来自编译器的错误消息

C:\pathtojava\sync\java\bin>javac ParseWhiData.java
ParseWhiData.java:97: error: '.class' expected
                                BigDecimal …
Run Code Online (Sandbox Code Playgroud)

java bigdecimal

-3
推荐指数
1
解决办法
290
查看次数

Java Double无法解除引用

我需要乘以radius*radius*pi找到圆的确切区域,但我写下的代码不起作用.它是不断给予双重不能被解除引用的错误...

错误

 ----jGRASP exec: javac -g Circle.java
Circle.java:7: error: double cannot be dereferenced
      BigDecimal area = radius.multiply(pi);
                              ^
1 error
Run Code Online (Sandbox Code Playgroud)

import java.math.*;
public class Circle {
   public BigDecimal findArea(double radius){
      double pi = 3.14159;
      radius = radius * radius;
      BigDecimal bd = new BigDecimal("1");
      BigDecimal area = pi.multiply(radius);
      return area;
   }
}
Run Code Online (Sandbox Code Playgroud)

java bigdecimal

-3
推荐指数
1
解决办法
235
查看次数

BigDecimal 除法方法返回 0 还是 ArithmeticException?

当我尝试使用以下方法划分 BigDecimals 时:

divide(divisor, RoundingMode.HALF_UP)

它返回 0

在此处输入图片说明

但是,如果我没有这样的舍入模式就这样做:

divide(divisor)

我得到一个 ArithmeticException

在此处输入图片说明

我不在乎数字是否不是精确的十进制表示。如何在不得到 0 或异常的情况下划分 BigDecimals?

java double rounding division bigdecimal

-3
推荐指数
1
解决办法
531
查看次数

Java Big Decimal Half甚至Bug?

我正在尝试专门使用这个值

new BigDecimal("23.025").setScale(2, RoundingMode.HALF_EVEN);

输出为23.02,但应为23.03.这是一个错误吗?

只是为了好奇DecimalFormat("#####0,00");也行不通

还有其他建议吗?

java rounding bigdecimal

-3
推荐指数
1
解决办法
214
查看次数

只有一个十进制的Java双值

可能重复:
如何在Java中将数字舍入到n个小数位

我有像"1234.9678"这样的Double值.我想只返回一个小数,没有舍入或上限.

我用这种方式,但它返回"1234.96"

public double roundTwoDecimals(double d) {

DecimalFormat twoDForm = new DecimalFormat("#.##");

return Double.valueOf(twoDForm.format(d)); }
Run Code Online (Sandbox Code Playgroud)

我只想要"1234.9",

我甚至用这种方式......但没有运气......任何人都可以帮忙吗?

double d = 1234.9678;
int decimalPlace = 1;
BigDecimal bd = new BigDecimal( Double.toString(d) );
bd = bd.setScale( decimalPlace, BigDecimal.ROUND_HALF_UP );
System.out.println( bd.doubleValue() );
Run Code Online (Sandbox Code Playgroud)

java decimal bigdecimal

-6
推荐指数
1
解决办法
4991
查看次数