我想在浮点数后存储一位

时间:2019-04-02 17:08:17

标签: java floating-point

如果用户输入5.123,如何将其存储在内存中(如5.1) 在java中 注意:我不需要显示它,只需要将它存储(存储)为一位数即可!!

例如:

6.334213 => 6.3

7.23947 => 7.2

100.123123 => 100.1

0.123123 => 0.1

3 个答案:

答案 0 :(得分:1)

很好的问题。这是一个例子。您可以使用DecimalFormat对象。

import java.text.DecimalFormat;
import java.math.RoundingMode;
import java.util.*;

public class HelloWorld {
    public static void main(String []args) {

        DecimalFormat df = new DecimalFormat("##.#");
        df.setRoundingMode(RoundingMode.DOWN);

        float number = 6.334213f;
        float fixedNumber = Float.parseFloat(df.format(number));
        System.out.println(number);
        System.out.println(fixedNumber);

    }
}

首先,创建DecimalFormat对象并确定格式以及舍入模式。然后,您可以使用format函数对其进行转换。但是,此函数返回一个StringBuffer对象(请参见here),因此要再次将其存储在float中,我们需要使用Float.parseFloat()将其转换回float。

更新:(一种更好的方法)

这可能是一种更高效的方法...将数字乘以基数(因为它是一个十进制(常规)数字,所以基数为10),升至小数点后的位数保持。

因此,在下面的示例中,我们希望截断除'。'右边的1个有效数字之外的所有内容,因此我们将10乘以10(即10),使用Math.floor()函数删除小数,然后再除以您乘以的相同数字。

public class HelloWorld {
    public static void main(String []args) {
        double number = 6.334213d;
        double fixedNumber = Math.floor(number * 10.0) / 10.0;
        System.out.println(fixedNumber);    // 6.3

        number = 6.334213d;
        fixedNumber = Math.floor(number * 1000.0) / 1000.0;
        System.out.println(fixedNumber);    // 6.334
    }
}

如果要在“。”后保留3位数字,请乘以10 ^ 3(即1000),然后除以相同的数字。

答案 1 :(得分:0)

据我所知,没有很好的方法来做,所以我倾向于这样做:乘以十,然后四舍五入,然后除以十。

答案 2 :(得分:0)

您可以使用:

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

有关四舍五入双精度值的更多详细信息,请阅读this tutorial by Mkyong.com