例如double a = 34.35; 在计算机内部用二进制无法精确表示34.35,所以存储的是一个近似的值
,但是当Console.WriteLine(a);的时候为什么输出的不是那个近似值而是34.35?
存储的是近似值不假,但是如果结果恰好相比较34.3500000000001 或者 34.349999999999999 来说,更靠近 35.350000000000,也就是35.35,那么就是35.35了。
string str8 =string.Format("{0:F1}",number2);
参考格式化http://www.cnblogs.com/bignjl/archive/2011/01/14/1935645.html
输出的精度,如果小数位是两位,四舍五入之后就是34.35
浮点数值在 Java 中是采用二进制系统表示的,二进制系统无法精确表示 34,35,我们知道,十进制小数向二进制小数转换的时候分别对 整数部分 和 小数部分 进行转换,第一步,将 整数部分除 2 取余 ,直到商为 0 为止,然后依次 将所得余数逆向排列 ,得到整数部分的二进制结果,第二步,将 小数部分乘 2 取整,直到小数部分为 0 为止,然后依次 将所得整数顺向排列 ,得到小数部分的二进制结果