如何在java中保存十进制

Eri*_*ric 6 java math

在Java中使用以下代码:

double operation = 890 / 1440;  
System.out.println(operation);  
Run Code Online (Sandbox Code Playgroud)

结果:0.0

我想要的是保存此操作的前4位十进制数字(0.6180).你知道我怎么办吗?

Mic*_*urr 17

使用一个计算结果为double而不是int的表达式初始化变量:

double operation = 890.0 / 1440.0;
Run Code Online (Sandbox Code Playgroud)

否则,表达式使用整数运算(最终截断结果)完成.截断的结果然后转换为a double.


Boz*_*zho 11

您可以使用双字面值d- 否则您的数字将被视为类型int:

double operation = 890d / 1440d;
Run Code Online (Sandbox Code Playgroud)

然后您可以使用a NumberFormat来指定位数.

例如:

NumberFormat format = new DecimalFormat("#.####");
System.out.println(format.format(operation));
Run Code Online (Sandbox Code Playgroud)

  • NumberFormat只影响表示,变量'operation'不受影响 (2认同)

npi*_*nti 6

你也可以这样做:

double result = (double) 890 / 1400;
Run Code Online (Sandbox Code Playgroud)

其中打印以下内容:

0.6180555555555556

您可以在此处查看如何对数字进行舍入


Gre*_*reg 5

这是使用 BigDecimal 完成的

   import java.math.BigDecimal;
import java.math.RoundingMode;


    public class DecimalTest {

        /**
         * @param args
         */
        public static void main(String[] args) {
            double operation = 890.0 / 1440.0;
            BigDecimal big = new BigDecimal(operation);     
            big = big.setScale(4, RoundingMode.HALF_UP);        
            double d2 = big.doubleValue();
            System.out.println(String.format("operation : %s", operation));
            System.out.println(String.format("scaled : %s", d2));
        }
    }
Run Code Online (Sandbox Code Playgroud)

输出

操作:0.6180555555555556 缩放:0.6181