Java 我想在浮点后存储一个数字

Java 我想在浮点后存储一个数字,java,floating-point,Java,Floating Point,如果我的用户输入了5.123,我怎样才能像5.1一样将其存储在内存中 在爪哇 注意:我不需要显示它,我只想(存储)在浮点后的一位数中 例: 6.334213=>6.3 7.23947=>7.2 100.123123=>100.1 0.123123=>0.1据我所知,没有一个好的方法可以做到这一点,所以我倾向于这样做:乘以10,然后四舍五入,再除以10。你可以使用: DecimalFormat df = new DecimalFormat("###.#"); 有关舍入双值的详细信息,请阅读。好问

如果我的用户输入了5.123,我怎样才能像5.1一样将其存储在内存中 在爪哇 注意:我不需要显示它,我只想(存储)在浮点后的一位数中

例:

6.334213=>6.3

7.23947=>7.2

100.123123=>100.1


0.123123=>0.1

据我所知,没有一个好的方法可以做到这一点,所以我倾向于这样做:乘以10,然后四舍五入,再除以10。

你可以使用:

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

有关舍入双值的详细信息,请阅读。

好问题。这里有一个例子。您可以使用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对象(请参见),因此要再次将其存储在浮点中,我们需要使用
float.parseFloat()
将其转换回浮点

更新:(更好的方式)

这可能是一种更有效的方法。。。将数字乘以其基数(因为它是十进制(常规)数字,基数为10),提升到小数点后要保留的位数

因此,在下面的示例中,我们希望截断除“.”右侧的1个有效数字以外的所有数字,因此我们将10乘以1(仅为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),然后除以相同的数字。

浮点a,x;a=scan.nextFloat();x=数学四舍五入(a*10)/10;系统输出println(x);输出=>5.0,但我需要5。1@Adham您是否知道应除以
10f
(或10.0表示双精度)
51/10
是整数除法,结果是
int
5。还要注意
0.1+0.2!=0.3
floatValue=Float.valueOf(String.format(“%.1f”,floatValue))试试这个。使用
BigDecimal
既然十进制数字在你的代码中非常重要,为什么不使用BigDecimal呢?乘+除10会更快,但它也会失去精度(如果你在意的话,在本例中作者可能不在乎)。@bezmax这是真的,但我认为这正是作者想要的问题(除非我遗漏了什么)。不,我的意思是,由于CPU是如何进行浮点计算的,通过执行乘法和除法,您的位很容易溢出。请参见此示例: