C# 调用方法时出现双精度浮点问题
这是我的家庭作业代码。在第10行,我遇到了双浮转换的问题,我不知道为什么它会出现。有小费吗?还有,代码还没有完成 更多信息,它是关于数字29.99,它被声明为float,但我想这里是双格式的C# 调用方法时出现双精度浮点问题,c#,methods,parameters,C#,Methods,Parameters,这是我的家庭作业代码。在第10行,我遇到了双浮转换的问题,我不知道为什么它会出现。有小费吗?还有,代码还没有完成 更多信息,它是关于数字29.99,它被声明为float,但我想这里是双格式的 using System; namespace Lab_3 { class BookTest { static void Main(string[] args) { Book book1 = new Book();
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;
}
}
}
}
编辑:
谢谢你的帮助!问题解决了,解释帮我解决了一些问题。试试看
Book book2 = new Book("Advenced C#", "Joe", "Robertson", 29.99f, "PUC Press");
文本
29.99
是double
文本,没有从double
到float
的隐式转换。选项:
- 将
文本与float
后缀一起使用:29.99f
- 转换为浮动:
(浮动)29.99
- 避免对价格使用二进制浮点数,将参数类型更改为
,并将参数更改为decimal
29.99m
Book book2 = new Book("Advenced C#", "Joe", "Robertson", 29.99m, "PUC Press");
这是毫无疑问的。我投票决定关闭,结果是什么错误?哦,请查看注释以获得一个答案。错误CS1503:Argument
#4'无法将
double'表达式转换为'float'(CS1503)(实验3)类型,错误CS1502:labu 3.Book.Book(string,string,string,float,string)的最佳重载方法匹配项有一些无效参数(CS1502)(实验三)我知道这很简单。谢谢。虽然我被要求使用浮点,但在这种情况下,29.99f是必须的。关于如何处理十进制的提示也非常有用。同意。不要使用浮点来存储货币。当四舍五入时,你会损失便士。@HelpNeeder:是的,这些人绝对正确。如果你的教授告诉你使用浮点对于金融计算,找一个更好的教授,因为这是危险的错误。浮点数用于物理计算,其中6.0280000001和6.02799999之间的差异是不相关的;这些差异在执行金融计算时是相关的。小数是专为金融计算设计的。好吧,我是这学期的金宁。也许这样的例子只是让我们开始使用C#点。这一点很好理解。我会向教授指出事实,看看他会说些什么。
Book book2 = new Book("Advenced C#", "Joe", "Robertson", 29.99m, "PUC Press");