2014-02-03 2 views
-1
public class Exercise05_08 { 
    public static void main(String[] args) { 
    System.out.println("Celsius\t\tFahrenheit\t|\tFahrenheit\tCelsius"); 
    System.out.println("---------------------------------------------"); 

    double celsius = 40; double farenheit = 120; 
    for (int i = 1; i <= 10; celsius--, farenheit -= 10, i++) { 
     System.out.println(celsius + "\t\t" + celsiusToFahrenheit(celsius) + "\t|\t" +  farenheit + "\t\t" + fahrenheitToCelsius(farenheit)); 
    } 
    } 

    public static double celsiusToFahrenheit(double celsius) { 
    return (9.0/5.0) * celsius + 32; 
    } 

    public static double fahrenheitToCelsius(double fahrenheit) { 
    return (5.0/9) * (fahrenheit - 32); 
    } 
} 

Некоторые значения печатаются с несколькими десятичными знаками, и я хочу, чтобы все значения печатались всего за 2 десятичных знака.Хотите, чтобы мой код печатал только 2 знака после запятой

ответ

0

Вы должны использовать format() метод:

System.out.format("%.2f", celsius); 

отформатирует значение с 2 знаков после запятой.

Поскольку вы используете println(), вы можете включить «\ n» в конце строк формата, чтобы вставить новую строку.

0

сделать следующие изменения, чтобы не печатать только 2 цифры после запятой:

NumberFormat formatter = new DecimalFormat("%.2f"); 
String s = formatter.format(celsiusToFahrenheit(celsius)); 

и печать:

System.out.println(celsius + "\t\t" + s + "\t|\t" + farenheit + "\t\t" + fahrenheitToCelsius(farenheit)); 
3

Вы можете иметь 2 знака после запятой с помощью DecimalFormat:

DecimalFormat myFormatter = new DecimalFormat("#.00"); 
String output = myFormatter.format(value); 

Вы можете найти дополнительную информацию о настраиваемых форматах и ​​структуре шаблонов (и ho w для их использования) here.

-1

Простое исправление будет состоять в том, чтобы умножить результат на 100, применить их к int, а затем снова разделить на 100.

Это может быть не самым элегантным решением, но он будет работать ..

EDIT: по-видимому, есть более элегантное решение, поэтому забудьте об этом.

+0

Нет, это не так. См. [Здесь] (http://stackoverflow.com/questions/153724/how-to-round-a-number-to-n-decimal-places-in-java/12684082#12684082) для доказательства. – EJP

Смежные вопросы