簡體   English   中英

將int舍入到小數點后1位?

[英]Rounding int to 1 decimal place?

因此,在以下代碼集中,我不明白為什么“%.1f”不能將y舍入到小數點后1位,運行程序時得到以下信息:

123 F = Exception in thread "main" 
    java.util.IllegalFormatConversionException: f != java.lang.String
    at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4045)
    at java.util.Formatter$FormatSpecifier.printFloat(Formatter.java:2761)
    at java.util.Formatter$FormatSpecifier.print(Formatter.java:2708)
    at java.util.Formatter.format(Formatter.java:2488)
    at java.io.PrintStream.format(PrintStream.java:970)
    at java.io.PrintStream.printf(PrintStream.java:871)
    at Check03A.main(Check03A.java:17)

我也嘗試過Math.round(y * 10)/ 10,但這給了我例如29.0而不是28.9

import java.util.*;
import java.io.*;
import java.lang.*;
import type.lib.*;

public class Check03A

{
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        PrintStream print = new PrintStream(System.out);
        print.println("Enter the temperature in Fahrenheit");
        int x = scan.nextInt();
        int y = 5 * (x - 32) / 9;
        print.printf(x + " F = " + "%.1f", y + " C");
    }
}

問題在這里:

print.printf(x + " F = " + "%.1f", y + " C");

此方法有兩個參數:

  • x + " F = " + "%.1f" (格式字符串),
  • y + "C" (參數)

濃縮第一個參數,該語句變為:

print.printf(x + "F = %.1f", y + "C");

問題: y + "C" 為什么? 好吧, +運算符的一個參數是String 因此,此+成為字符串連接運算符,參數最終將是String.valueOf(y) + "C"

但是格式字符串中的格式規范為%.1f ,它需要一個floatdouble或它們的等效形式。 它不知道如何處理String參數。

因此,錯誤。


還有一個問題是您要進行整數除法,但這不是此問題的主題。 只要解決了所有數字問題,您的印刷聲明最終將是:

print.printf("%.1f F = %.1f C", x, y);
public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        PrintStream print = new PrintStream(System.out);
        print.println("Enter the temperature in Fahrenheit");
        int x = scan.nextInt();
        //change it
        float y = 5 * (x - 32) / 9;
        print.printf(x + " F = " + "%.1f", y).print(" C");
    }

如果要使用%f請將y為float

float y = 5 * (x - 32) / 9;
print.printf(x + " F = " + "%.1f", y ).print("C");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM