两个奇怪搞不懂的小疑点答了者必20分,0.9

两个奇怪搞不懂的小问题答了者必20分,0.9
1.
#include <iostream.h>
int   main()
{float   i;
for(i=0.0;i <=1.0;i+=0.1)
cout < <i < < ", ";
cout < <i;
if(1 <=1.0)
cout < < "\nok ";
cin.get();
                return   0;
}
只输出到0.9????????????
2.
新建文本文档-> 输入 '电信 '-> 关闭保存再打开-> 输入 '联通 '-> 关闭保存再打开
为什么???????????????????


------解决方案--------------------
问题1:精度问题i是float型,1.0常量是double型 float型1.0与double型1.0并不相等。建议浮点数这种有=号比较的一律用double型。
问题2:记事本采取的是一种文本文件“智能识别”,也就是在GBK、GB2312、UTF8等几种编码文件中智能识别,对于既符合一种规则又符合另一种规则的文件,采取的优先级中GB2312排在了后面,这样当输入GB2312的“联通”,就出现这样的情况。

其实解决的该问题的方法也很简单,在保存文件时候选择Unicode编码就OK了。