C#关于double类型的显示

例如double a = 34.35; 在计算机内部用二进制无法精确表示34.35,所以存储的是一个近似的值
,但是当Console.WriteLine(a);的时候为什么输出的不是那个近似值而是34.35?

c#

4个回答

存储的是近似值不假,但是如果结果恰好相比较34.3500000000001 或者 34.349999999999999 来说,更靠近 35.350000000000,也就是35.35,那么就是35.35了。

jsblog
jsblog 明白了
大约 2 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 34.35,笔误,写成了35.35
大约 2 年之前 回复

输出的精度,如果小数位是两位,四舍五入之后就是34.35

jsblog
jsblog 那就是说计算机还保存了十进制数小数位,输出时根据这个小数位数来确定34.35的近似值转化为十进制后的数字该怎么显示?对吗
大约 2 年之前 回复

string str8 =string.Format("{0:F1}",number2);

参考格式化http://www.cnblogs.com/bignjl/archive/2011/01/14/1935645.html

浮点数值在 Java 中是采用二进制系统表示的,二进制系统无法精确表示 34,35,我们知道,十进制小数向二进制小数转换的时候分别对 整数部分 和 小数部分 进行转换,第一步,将 整数部分除 2 取余 ,直到商为 0 为止,然后依次 将所得余数逆向排列 ,得到整数部分的二进制结果,第二步,将 小数部分乘 2 取整,直到小数部分为 0 为止,然后依次 将所得整数顺向排列 ,得到小数部分的二进制结果

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问