1

互換性のないデータ型のエラーが発生する理由がわかりませんfloat。財務値に を使用しています。小数点以下 2 桁を超えたくありません!

でこれを行うことができるという印象を受けましたが、次のようなfloatエラーが返されました。

コンストラクター マガジンは特定のタイプには適用できません。

float7.99 ではなく 7 を作成すると、問題なく動作します。

a とは何かを誤解していますか?代わりにfloata を使用する必要がありますか?double

雑誌のクラスとテスト クラスのデモを少しだけお見せします。

テストクラス:

float以下は、小数点以下 2 桁までを使用しようとしているテスト クラスの一部です。

public static void main()
{
    Magazine magazine1 = new Magazine("SanYonic Publishing", "Ayup Magazine", 7.99, "Yeshumenku Suni", "12/09/2011");

    System.out.println();
    magazine1.getEditor();
    magazine1.getDate();
    magazine1.getPublisher();
    magazine1.getPublicationTitle();
    magazine1.getPrice();
    System.out.println();
    …
}

Magazineクラス:

/**
 * Magazine Class - This class represents Magazine Objects
 */
public class Magazine extends Publication
{

    private String editor;
    private String date;

    public Magazine(String publisherIn , String publicationTitleIn, float priceIn, String editorIn, String dateIn)
    {
        super (publisherIn , publicationTitleIn, priceIn);

        editor = editorIn;
        date = dateIn;
    }

    public void setPublication(String publisherIn, String publicationTitleIn, float priceIn)
    {
        publisherIn = publisher;
        publicationTitleIn = publicationTitle;
        priceIn = price;
    }

    public String getEditor()
    {
        System.out.println("The editor of this magazine is " + editor);
        return (editor);
    }

    public String getDate()
    {
        System.out.println("The publication date of this magazine is " + date);
        return (date);
    }

    public String getPublisher()
    {
        System.out.println("The publisher of this magazine is " + publisher);
        return (publisher);
    }

    public String getPublicationTitle()
    {
        System.out.println("The publication title of this magazine is " + publicationTitle);
        return (publicationTitle);
    }

    public float getPrice()
    {
        System.out.println("The price of this magazine is £" + price);
        return (price);
    }
}
4

2 に答える 2

3

Java では、小数点を含む数値はdoubleデフォルトで a です。試してみてください7.99f

また、通貨を使用して計算を行っている場合は、BigDecimal後で奇妙な丸めエラーを回避するために、 を確認する必要があります。

于 2012-01-18T21:38:27.053 に答える
3

あなたが必要

Magazine magazine1 = new Magazine ("SanYonic Publishing", "Ayup Magazine", 7.99f, "Yeshumenku Suni", "12/09/2011");

7.99fコンパイルの問題を修正することに注意してください。

float と double はどちらも、離散的な値のセットしか表すことができないため、通貨の計算には適していません (精度が重要な場合)。すべての通貨計算は BigDecimal で行う必要があります。

于 2012-01-18T21:35:58.307 に答える