Java - Использование float - ошибка конструктора - PullRequest
1 голос
/ 19 января 2012

Я не понимаю, почему я получаю ошибку несовместимого типа данных, я использую float для финансовой стоимости, я не хочу идти после двух десятичных знаков!

У меня сложилось впечатление, что вы можете сделать это с float, однако мне возвращается сообщение об ошибке, говорящее:

Журнал «Конструктор» не может применяться к данным типам.

Когда я просто делаю float 7 вместо 7.99, он отлично работает!

Неужели я не понял, что такое float, нужно ли мне вместо него использовать double?

Я просто покажу свой класс журнала и немного своего тестового класса, чтобы продемонстрировать.

Класс испытаний:

Следующий фрагмент моего тестового класса пытается использовать float с двумя десятичными разрядами:

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);
    }
}

Ответы [ 2 ]

3 голосов
/ 19 января 2012

В Java число с десятичной точкой по умолчанию равно double.Попробуйте 7.99f.

Кроме того, если вы делаете расчеты с валютой, вы должны взглянуть на BigDecimal, чтобы избежать странных ошибок округления в дальнейшем.

3 голосов
/ 19 января 2012

вам нужно

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

обратите внимание на 7.99f, чтобы исправить проблему компиляции.

Обратите внимание, что значения типа float и double не подходят для денежных расчетов (если вам нужна точность), поскольку они могут представлять только дискретный набор значений. Все расчеты валюты должны быть сделаны с BigDecimal.

...