这是我的作业代码。在第10行,我遇到了双浮动转换的问题,我不确定它为什么会到位。有什么提示吗? PS。代码尚未完成。
更多信息,它是关于编号29.99,它被声明为float,但我认为这是双重形式。
using System;
namespace Lab_3
{
class BookTest
{
static void Main(string[] args)
{
Book book1 = new Book();
Book book2 = new Book("Advenced C#", "Joe", "Robertson", 29.99, "PUC Press");
}
}
public class Book
{
string authorFirstName;
string authorLastName;
float price;
string publisherName;
string title;
public Book()
{
}
public Book(string bookTitle, string firstName, string lastName, float bookPrice, string publisher)
{
authorFirstName = firstName;
authorLastName = lastName;
price = bookPrice;
publisherName = publisher;
title = bookTitle;
}
public void display()
{
}
public string getAuthorName()
{
return 0;
}
public string AuthorFirstName
{
get
{
return authorFirstName;
}
set
{
authorFirstName = value;
}
}
public string AuthorLastName
{
get
{
return authorLastName;
}
set
{
authorLastName = value;
}
}
public float Price
{
set
{
price = value;
}
}
public string PublisherName
{
set
{
publisherName = value;
}
}
public string Title
{
set
{
title = value;
}
}
}
}
编辑:
感谢您的帮助!问题解决了,解释帮助我解决了一些问题。
答案 0 :(得分:7)
文字29.99
是double
字面值,并且没有从double
到float
的隐式转换。选项:
float
后缀的f
字面值:29.99 (float) 29.99
decimal
,将参数更改为29.99m
。我强烈建议最后一种方法 - 价格(以及一般的“人为”值)不非常适合二进制浮点数。人们倾向于认为 decimal 值将被精确保留,这意味着它更适合十进制浮点数。
我有关于binary floating point numbers和decimal floating point numbers的文章,您可能会觉得这些文章很有用。
所以,为了清楚起见,你的构造函数看起来像这样(我稍微重命名了参数):
public Book(string title, string authorFirstName, string authorLastName,
decimal price, string publisher)
你会这样称呼它:
Book book2 = new Book("Advenced C#", "Joe", "Robertson", 29.99m, "PUC Press");
答案 1 :(得分:2)
尝试
Book book2 = new Book("Advenced C#", "Joe", "Robertson", 29.99f, "PUC Press");