Tag: bigdecimal

将double转换为BigDecimal并设置BigDecimal Precision

在Java中,我想要一个double值并将其转换为一个BigDecimal并将其string值打印到一定的精度。 import java.math.BigDecimal; public class Main { public static void main(String[] args) { double d=-.00012; System.out.println(d+""); //This prints -1.2E-4 double c=47.48000; BigDecimal b = new BigDecimal(c); System.out.println(b.toString()); //This prints 47.47999999999999687361196265555918216705322265625 } } 它打印这个巨大的东西: 47.47999999999999687361196265555918216705322265625 并不是 47.48 我进行BigDecimal转换的原因有时是double值将包含很多小数位(即-.000012 ),将double转换为String时将产生科学记数法-1.2E-4 。 我想以非科学记数法存储string值。 我想让BigDecimal总是有两个精度单位,例如:“47.48”。 BigDecimal是否可以限制转换为string的精度?

如何用Java中的整数乘以BigDecimal

你如何用Java中的整数乘以BigDecimal? 我尝试过,但不正确。 import java.math.BigDecimal; import java.math.MathContext; public class Payment { int itemCost; int totalCost = 0; public BigDecimal calculateCost(int itemQuantity,BigDecimal itemPrice){ itemCost = itemPrice.multiply(itemQuantity); totalCost = totalCost + itemCost; return totalCost; }

为什么BigDecimal(“5.50”)不等于BigDecimal(“5.5”)以及如何解决此问题?

其实,我find了可能的解决办法 //returns true new BigDecimal ("5.50").doubleValue () == new BigDecimal("5.5").doubleValue () 当然,可以用Math.abs (v1 – v2) < EPS这样的东西来改进,使得比较更稳健,但问题是这个技术是可以接受的还是有更好的解决scheme呢? 如果有人知道为什么Javadevise者决定以这种方式实现BigDecimal的平等,那么读起来会很有趣。

BigDecimalstring

我有一个BigDecimal对象,我想将其转换为string。 问题是我的价值得分,我得到一个巨大的数字(在长度),我只需要string中的原始数字例如:for BigDecimal bd = new BigDecimal(10.0001) System.out.println(bd.toString()); System.out.println(bd.toPlainString()); 输出是: 10.000099999999999766941982670687139034271240234375 10.000099999999999766941982670687139034271240234375 而我需要的是string中的数字10.0001

BigDecimal的对数

我怎样才能计算一个BigDecimal的对数? 有谁知道我可以使用的任何algorithm? 到目前为止,我的谷歌search已经提出了(无用)的想法,只是转换为双重使用Math.log。 我将提供所需答案的精确度。 编辑:任何基地将做。 如果在x基础上更容易,我会这样做。

在java中使用哪种舍入模式进行货币操作?

我已阅读在Java网站上使用BigDecimal的货币。 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html 但是我们应该使用什么舍入模式呢? 这是我们最合适的和最广泛的

Java double vs BigDecimal的纬度/经度

当存储纬度/经度的格式通常是:44.087585(即最多2点之前的数字和6dp)是否需要打扰大的?

使用java.math.MathContext

最近我尝试了解java.math.MathContext的使用,但未能正确理解。 是否用于在java.math.BigDecimal进行舍入,如果是,为什么不是十进制数字,而是甚至是mentissa部分。 从API文档,我知道它遵循ANSI X3.274-1996和ANSI X3.274-1996/AM 1-2000 ANSI X3.274-1996规范中指定的标准,但是我没有让他们在线阅读。 请让我知道,如果你有这个想法。

Java,只提取一个BigDecimal的小数部分?

在Java中,我正在使用BigDecimal类,部分代码要求我从中提取小数部分。 BigDecimal似乎没有任何内置的方法来帮助我获取BigDecimal的小数点后面的数字。 例如: BigDecimal bd = new BigDecimal("23452.4523434"); 我想从上面表示的数字中提取4523434 。 什么是最好的办法呢?

为什么toString无法在不可变的BigDecimal上产生正确的值?

import java.math.BigDecimal; import java.math.RoundingMode; public class BigDecimalTest { public static void main (String[] args) { // 4.88…e+888 (1817 digits) BigDecimal x = new BigDecimal("4.+888"); BigDecimal y = new BigDecimal("7.11510949782866099699296193137700951609335763543887012748548458182417747578081585833524887774072570691956766860384875364912060891737185872746005419263400444156198098581226885923291670353816772414798224148927688218647602446762953730527741703572368727049379249227044080281137229152770971832240631944592537904743732558993126e+302"); BigDecimal z = x.divide(y, 0, RoundingMode.HALF_UP); System.out.println("x: " + x.toString()); System.out.println(); System.out.println("y: " + y.toString()); System.out.println(); System.out.println("z: " + z.toString()); } } 编 >javac BigDecimalTest.java 执行 […]