Jai*_*bin 4 java floating-point rounding
好吧,我知道有一个问题已经非常相似,但它并没有完全回答我的问题.如果我做错了,请告诉我.
我已经编写了一个程序,可以从用户那里获得华氏温度并将其转换为Celcius.它看起来像这样:
import java.util.Scanner;
public class FahrenheitToCelcius {
public static void main(String[] args) {
double fahrenheit;
Scanner sc = new Scanner(System.in);
System.out.print("Please enter a temperature in Fahrenheit: ");
fahrenheit = sc.nextDouble();
double celcius = (fahrenheit - 32) * 5 / 9;
String num = String.format("%.3f", celcius);
System.out.println(" ");
System.out.println(fahrenheit + "F" + " is " + num + "C");
}
}
Run Code Online (Sandbox Code Playgroud)
当它打印出答案时,我只想打印前3个小数位,但不是圆形.例如,如果输入是100F,我想37.777C打印,而不是 37.778C.
我尝试过使用DecimalFormat和String.format(如上所述),但两种方法都打印出来37.778C.有一个更好的方法吗?
谢谢你的回答,如果这是重复,我道歉.
Tag*_*eev 13
你可以使用DecimalFormat,只需设置RoundingMode:
DecimalFormat df = new DecimalFormat("#.###");
df.setRoundingMode(RoundingMode.FLOOR);
String num = df.format(celcius);
Run Code Online (Sandbox Code Playgroud)
将摄氏度乘以 1000 将小数点移动 3 位
celsius = celsius * 1000;
Run Code Online (Sandbox Code Playgroud)
现在把数字除以 1000
celsius = Math.floor(celsius) / 1000;
Run Code Online (Sandbox Code Playgroud)
它将消除对 String.format() 方法的需要。