我正在学习从“用C#计算机程序设计基础”用C#Svetlin Nakov等(可免费在这里:http://www.introprogramming.info/english-intro-csharp-book/)如何获得Float的长度? (C#)
每章后,作者想问超越的问题本章的范围。第135页,问题3要求我编写一个程序,可以正确比较两个实数,精度为0.000001(7位有效数字)。
所以我使用浮点数来比较数字,我决定添加一些代码来检查输入的数字是否比浮点数可以处理的7位有效数字更长。所以我需要检查有效位数。谷歌告诉我,我应该使用sizeof(float)来做到这一点,但我一直在sizeof检查的行上发现CS0246错误(无法找到类型或名称空间)。
该程序的工作原理是,包括检查数字长度的代码。我找不到C#的答案。
有什么问题?
编辑:感谢所有的答案。让我澄清我的问题:我明白解析为字符串自动浮动检查有效性。不过,我昨天尝试了我的程序,花车将失去超过7位有效数字。所以如果我比较0.123457和0.12345678,程序会声明这两个数字是相同的,因为第二个数字是四舍五入的。这就是为什么我试图捕捉超过7位数字的花车。我用这种方式解释这个问题,因为它发生在我身上,这两个非常相似但不相同的数字在这些裂缝中滑过。
using System;
// Compare two real numbers with up to 0.000001 (7) significant digits
class Compare_Numbers
{
static void Main(string[] args)
{
// Processing the first number
String firstNumString = null;
Console.WriteLine("This program compares 2 numbers with upto 7 significant digits.\nEnter the FIRST number with up to 7 significant digits");
firstNumString = Console.ReadLine();
float firstNum = Single.Parse(firstNumString);
if (sizeof(firstNum) > 7)
{
Console.WriteLine("That number is too long!\nEnter a number with a MAX of 7 significant digits!");
}
// Processing the second number
String secondNumString = null;
Console.WriteLine("Enter the SECOND number with up to 7 significant digits");
secondNumString = Console.ReadLine();
float secondNum = Single.Parse(secondNumString);
if (sizeof(secondNum) > 7)
{
Console.WriteLine("That number is too long!\nEnter a number with a MAX of 7 significant digits!");
}
if (firstNum == secondNum)
{
Console.WriteLine("The two numbers are the SAME!");
}
else
{
Console.WriteLine("The two numbers are DIFFERENT!");
}
}
}
'sizeof'不符合你的想法。请参阅:http://msdn.microsoft.com/en-us/library/eahchzkf.aspx –
'sizeof(float)'会给你一个'float'存储的字节数,而不是有效数字的数目。在解析和计数数字之前,您只需要查看字符串即可。 – Enigmativity