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 明白了
3 个月之前 回复
caozhy
caozhy 34.35,笔误,写成了35.35
3 个月之前 回复
qq_41791158
qq_41791158   2018.05.16 17:32

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

jsblog
jsblog 那就是说计算机还保存了十进制数小数位,输出时根据这个小数位数来确定34.35的近似值转化为十进制后的数字该怎么显示?对吗
3 个月之前 回复
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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C# 准确输出double类型值
-
C#winform限制文本框输入double类型值
C#winform 限制文本框输入 double类型值 原理可应用与各种语言
double类型显示问题 设置显示小数点位数
void print_double() { char input; double number = 1234.56789,weight = 130.645789,height = 168, six = 666666.66666; cout<<"original data:\n"; cout<<number<<" "<<weight<<" "<
让Double类型完整显示,不用科学计数法显示E
DecimalFormat df = new DecimalFormat("0"); Double d = new Double("1.397545871E10"); System.out.println(df.format(d)); 上面如果有小数就截掉了,这个好一
解决double类型运算时精度丢失问题
package org.eredlab.g4.ccl.util; /* ******************************************************************* * Copyright TOPCASE 2009 * ********************************
C#double类型变量比较
double类型变量怎么比较大小通过使用double.equals(doubale a,double b)进行比较时,发现两个数值不是相等。 图中sum为从0加0.1累计到1,按数学计算应该为1.0,但是在计算机中计算为0.9999999999,通过double.equals或者直接用==进行等量判断时,发现不相同。 这说明double类型不能直接进行等量判断,那么怎么进行比较呢?类型转换为
C#设置double类型的数据的保存位数
C#保留有效位数的小数
double类型值相等判断
两实数相等:两实数的差在允许的范围内认为相等既可认为是相等的。范围:1e-6(0.000001)主要代码:int IsEqual(double a,double b) { return fabs(a-b) < 0.000001; }整个判断代码#include <iostream> #include <cmath> using namespace std;int IsEqual(double
double类型相减结果误差的解决办法
 public   class   DBConnectionManager   {         public   static   void   main(String[]   args)   {             double   a1   =   1.0;             double   a2   =   2.2;              //使用一下3句代码    
double类型数据初始化
看ffmpeg代码,但到有把double类型的数据初始化为NAN,百度一下,NAN: Not A  Number。 NAN定义在#include 。 下面直接帖代码介绍一下NAN的应用 double d = NAN; printf("d = %f\n", d); if (isnan(d)) { printf("d is NAN\n"); } else { printf