如果用户输入5.123,如何将其存储在内存中(如5.1) 在java中 注意:我不需要显示它,只需要将它存储(存储)为一位数即可!!
例如:
6.334213 => 6.3
7.23947 => 7.2
100.123123 => 100.1
0.123123 => 0.1
答案 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。