在Java中,将double类型转换为String类型并保留指定精度,可以通过多种方式实现,其中DecimalFormat和String.format是两种常用的方法。下面将分别介绍这两种方法,并给出相应的代码示例。 1. 使用DecimalFormat DecimalFormat是java.text包下的一个类,专门用于格式化数字。它允许你设置数字的格式,包括小数点后的位数。 示例代码...
下面是一个完整的示例代码,展示了如何将double类型的数据转换为string类型时不丢失精度。 importjava.text.DecimalFormat;publicclassDoubleToString{publicstaticvoidmain(String[]args){doubledoubleValue=3.141592653589793238;// 创建DecimalFormat对象DecimalFormatdecimalFormat=newDecimalFormat();// 设置格式化模式decimalFormat.ap...
我们可以使用DecimalFormat类来将Double类型转换为String并保持精度。 代码示例 下面的代码示例演示了如何使用DecimalFormat类将Double类型转换为String并保持精度: doublenumber=3.1415926;// 使用DecimalFormat类进行转换DecimalFormatdecimalFormat=newDecimalFormat("#.0000");Stringresult=decimalFormat.format(number);System.out....
public class countMoney { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入一个代表总钱数的双精度值,例如127.63"); double money = sc.nextDouble(); // double money = 127.63; //佰圆纸钞; 100 int bai = (int)(money / 10 /10 % ...
另外需要注意,使用BigDecimal(double val)构造函数时仍会存在精度丢失问题,建议使用BigDecimal(String val)。这就需要先把double转换为字符串然后在作为BigDecimal(String val)构造函数的参数。转换为BigDecimal对象之后再进行加减乘除操作,这样精度就不会出现问题了。这也是为什么有关金钱数据存储都使用BigDecimal。
String.valueof不行?
java-decimal不会丢失string和double的数字精度: 注意:double转bigdecimal,必须使用 Bigdecimal.valueof() 方法,不可以使用 new Bigdecimal() 方法,否则会在转换的过程丢失精度。 例子如下: Double 是15.6的,转成 bigDecimal的时候变成了15.99999999了。不得不防啊。
1、是将double 通过Double.toString(double)先转为String,然后放入BigDecimal的String构造函数中。 2、不通过BigDecimal的构造函数,而是通过它的静态方法BigDecimal.valueOf(double),也同样不会丢失精度。 示例 publicstaticvoidmain(String[] args){Stringstring=Double.toString(4.3);BigDecimalstringBigDecimal=newBigDecimal...
double 由于有 exp 位,可以存 16 位以上的数字,但是需要以低位的不精确作为代价。如果需要高于 19 位数字的精确存储,则必须用 BigInteger 来保存,当然会牺牲一些性能。 所以我们一般使用 BigDecimal 来解决商业运算上丢失精度的问题的时候,声明 BigDecimal 对象的时候一定要使用它构造参数为 String 的类型的构造器。