你如何向仍然认为计算机是无限智能和准确的新鲜程序员和外行人解释浮点不准确?
你有一个最喜欢的例子或轶事似乎比一个精确但干燥的解释更好地理解这个想法吗?
这是如何在计算机科学课程中教授的?
我正在使用Visual Studio 6和一些用c编写的旧时代码.我发现代码看起来像这样的问题..
int x = 3;
float y = 3.0;
if(x == y){
do some crazy stuff
}
Run Code Online (Sandbox Code Playgroud)
这是一个有效的比较吗?是否有可能在运行时浮点数的分配是3.0000001,这会失败?
我有以下代码(随意更改浮动与双):
class A
{
public:
void setValueFloat(float v) {
m_floatValue = v / 3.6; // m/s <-> km/h conversion
}
void setValueInt(int v1, int v2) {
m_intValue1 = v1; m_intValue2 = v2;
}
bool conditionIsOk()
{
if(m_intValue1 > m_intValue2)
{
if(m_intValue1 - m_intValue2 > m_floatValue)
{
return true;
}
}
return false;
}
private:
int m_intValue1, m_intValue2;
float m_floatValue;
};
Run Code Online (Sandbox Code Playgroud)
和其他地方:
A a;
int something = 5; // Intentionally int
int somethingElse = 6; //these are just some numbers, not …Run Code Online (Sandbox Code Playgroud) #include <stdio.h>
int main()
{
int x=3;
float y=3.0;
if(x==y)
printf("\n x and y are equal");
else
printf("\n x and y are not equal")
return 0;
}
Run Code Online (Sandbox Code Playgroud)
代码打印“x 和 y 相等”。请解释这是如何发生的。