一个浮点数跨平台产生的问题
感谢网友唐磊(微博@唐磊_name)投稿,本文原文在唐磊的博客上(原文地址),原文分析还不够好,而且可能对人有误导,所以,我对原文做了很多修改,并加了Linux下的内容。浮点数是一个很复杂的事情,希望这篇文章有助于大家了解浮点数与其相关的C/C++的编译选项。(注:我没有Windows 32位以及C#的环境,所以,对于Windows 32位的程序和C#的程序没有验证过)
背景就简单点儿说,最近一个项目C#编写,涉及浮点运算,来龙去脉省去,直接看如下代码。
float p3x = 80838.0f;
float p2y = -2499.0f;
double v321 = p3x * p2y;
Console.WriteLine(v321);
很简单吧,马上笔算下结果为-202014162,没问题,难道C#没有产生这样的结果?不可能吧,开启Visual Studio,copy代码试试,果然结果是-202014162。就这样完了么?显然没有!你把编译时的选项从AnyCPU改成x64试试~(服务器环境正是64位滴哦!!)结果居然边成了-202014160,对没错,就是-202014160。有 ...
.NET代码转换器
想把.NET的代码(C#和VB.NET)互转吗?或是转成Python或Ruby吗?在 http://www.developerfusion.com/ 站点上有这样的在线工具。点击下面的链接你可以使用这些工具。当然,这些工具也有很多BUG。
把 C# 转成 VB.NET
把 C# 转成 Python
把 C# 转成Ruby
把 VB.NET 转成C#
把 VB.NET 转成 Python
把 VB.NET 转成 Ruby
老实说,我并不太清楚这些工具有什么用,看似很useless。难道是为了用来学习新的语言?就像Google的Translator的一样?就像一个并不懂中文的老外可以用Google Translator在其Facebook中整点中文耍耍酷一样,难道说,一个C#的程序员可以用这样的工具和一个Python的程序员也耍耍酷?各位看客觉得这个东西有意义吗?
不过,有一点我可以确定,如果有工具把Unix/Linux下的C源码和Windows下的C源码相互自动转换,估计这会是相当划时代的,因为,这应该会让那些什么Win ...
初学C#编程的注意事项
下面是8个C#编程时的注意事项是给初学者的,可能你知道,也可能你不知道,不过这些都是一些可能会让人疏忽的地方,还是要注意一下。
1.使用String变量:
考虑有下面的一个程序想判断一下字符串是否有内容。
if (someString.Length > 0)
{
// …
}
但是,这个字符串对象很可能是个空对象,所以,最好先判断一下null
if (!String.IsNullOrEmpty(someString))
{
// 是不是更好一些?
}
2.字符器连接
string s = “dev”;
s += “-”;
s += “the”;
s += “-”;
s += “web”;
s += “.”;
s += “com”;
这样做没什么问题,只不过性能不高,因为+=操作符其实调用的是String类的Append访问,所以,+=会有两次函数调用,下面的则会好一些。
StringBuilder s = new StringBuilder();
s.Append(”dev”);
s.Append(”-”);
s.Append(”th ...