Я не понимаю, почему я получаю ошибку несовместимого типа данных, я использую float
за финансовое значение, я не хочу проходить через два десятичных знака!Java- Использование ошибки float-constructor
Я был под впечатлением, что вы могли бы сделать это с 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);
}
}
Я бы рекомендовал, чтобы вы не использовали 'float' (или' double') для финансовых расчетов. Номера с плавающей точкой не являются точными, и вы можете получить странные ошибки округления. Обычно гораздо лучше использовать целочисленную или фиксированную арифметику, т. Е. Вычислять все в терминах целого числа центов или использовать класс «BigDecimal». –
Я бы настоятельно рекомендовал использовать BigDecimal вместо float/double, поскольку типы примитивов имеют проблемы округления, хранящие большой поднабор десятичных значений. –