2 jsblog jsblog 于 2018.05.16 17:27 提问

C#关于double类型的显示
c#

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

4个回答

caozhy
caozhy   Ds   Rxr 2018.05.16 17:51
已采纳

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

jsblog
jsblog 明白了
10 天之前 回复
caozhy
caozhy 34.35,笔误,写成了35.35
11 天之前 回复
qq_41791158
qq_41791158   2018.05.16 17:32

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

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

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

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

myr325325
myr325325   2018.05.16 20:31

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!