有一个编程错误

本文关键字:错误 编程 有一个 | 更新日期: 2023-09-27 18:16:53

Console.WriteLine("Please enter a number");
int num = int.Parse(Console.ReadLine());
int num1 = int.Parse(Math.Floor(num));
int num3 = int.Parse(num - num1);
Console.Write("shekel: "); 
Console.WriteLine(num1);
Console.Write("agorot: "); 
Console.WriteLine(num3);

我在第3行得到一个错误:

项目文件行错误CS0121呼叫是以下方法或属性之间存在歧义:'Math.Floor(decimal)'和'Math.Floor(double) '

第4行:

项目文件行错误CS1503参数1:无法从'int'转换为'string'

我应该编写一个程序,接收一个数字(比如10.22),然后在一条消息中,然后在另一条消息中,说什么是十进制数,什么是点后面的数字。

我做错了什么?

有一个编程错误

你应该这样做:

decimal number = Decimal.parse(Console.ReadLine());
int numberInteger = int.Parse(Math.Floor(number));
decimal numberAfterDot = number - numberInteger;

还要记住,有些数字是这样写的:10.22,有些数字是这样写的:10,22

首先,如果您想要一个十进制(数学)数字,为什么要将其解析为int ?你想要解析为十进制/双精度/浮点数(它们是不同的,参见这个问题),但我还是会使用double

你可以这样做:

Console.WriteLine("Please enter a number");
decimal num = decimal.Parse(Console.ReadLine());
decimal firstPart = Math.Truncate(num);
decimal secondPart = num - firstPart;
Console.Write("shekel: ");
Console.WriteLine(firstPart);
Console.Write("agorot: ");
Console.WriteLine(secondPart);

如果想去掉secondPart中的积分0,可以将其转换为字符串并切片