C#关于double类型的显示

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

c#
1

4个回答

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

1
jsblog
jsblog 明白了
8 个月之前 回复
caozhy
caozhy 34.35,笔误,写成了35.35
8 个月之前 回复

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

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

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

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

0

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

-2
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C#winform限制文本框输入double类型值
C#winform 限制文本框输入 double类型值 原理可应用与各种语言
显示double类型的数据
double temp=3.1415926;    //保留一位小数 四舍五入 结果:3.1 string str1=temp.toString("f1");   //保留两位小数,四舍五入 下面一次类推 结果:3.14 string str2=temp.toString("f2");   //保留 结果:3.14   string str2=temp.t
Double类型转换为百分比格式
Double rate =0.03; NumberFormat num = NumberFormat.getPercentInstance(); String rates = num.format(rate);然后输出rates即可
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类型运算时精度丢失问题
package org.eredlab.g4.ccl.util; /* ******************************************************************* * Copyright TOPCASE 2009 * ********************************
让Double类型完整显示,不用科学计数法显示E
DecimalFormat df = new DecimalFormat("0"); Double d = new Double("1.397545871E10"); System.out.println(df.format(d)); 上面如果有小数就截掉了,这个好一
C#double类型变量比较
double类型变量怎么比较大小通过使用double.equals(doubale a,double b)进行比较时,发现两个数值不是相等。 图中sum为从0加0.1累计到1,按数学计算应该为1.0,但是在计算机中计算为0.9999999999,通过double.equals或者直接用==进行等量判断时,发现不相同。 这说明double类型不能直接进行等量判断,那么怎么进行比较呢?类型转换为
关于double类型的误差问题
以一元二次方程a*x*x+b*x+c=0为例,讲讲关于double类型的误差问题。当a为0时,方程的根为-c/b;当a不为0时,得进一步确定判别式△,△=b*b-4*a*c,令d=△;当d&amp;lt;0,无实根;当d=0,两根为同一值,x1=x1=-c/b;当d&amp;gt;0,由求根公式得到两个不同的根值。其中C语言编程中必用到根号,所以涉及到使用double。double有32位,每一位具有相应的意义,...
C#中double类型保留小数点后两位
C#语言的double类型占用8字节,代码中的常数是小数形式,默认是double类型。float赋值给double类型,自动转为doule类型。double类型的小数位默认最少一位,如果小数位数后有多余的0自动把多余的0去掉。例如: double dTest = 1234;//此时dTest的值为1234.0;dTest = 1.00;//此时dTEst的值为1.0; 如果调用 dTest.T
double类型相加精度问题解决
double Sum = Add(Convert.ToDouble(values.GetValue(85, i)), Convert.ToDouble(values.GetValue(86, i)));      #region 加         private double Add(double add1, double add2)         {             do
double保留几位小数 不足补0
double保留几位小数 不足补0
WPF中,一个只能输入Double类型数字的TextBox控件的类
using System; using System.Windows.Controls; using System.Windows.Input; namespace Common.Controls {     public class TextBoxDoubleEx : TextBox     {         public TextBoxDoubleEx()      
编写一个函数 找出double类型中最大数的下标 输出下标
#include "stdAfx.h" #include "ctype.h" #include "stdlib.h" int main(void) { double sum_(double a[],int x); double a[5]={4,7,1,8,9}; double sum; sum=sum_(a,5); printf("%0.2lf\n",sum); system("pau
将double类型的数据写入二进制文件,从二进制文件中读取double类型数据
这是C的代码  //写入二进制文件   FILE *f=fopen("F:\\g.txt","wb+"); double d=123456123.1231231131; fwrite(&d,sizeof(double),1,f); fclose(f); //从二进制文件读出 FILE *fop=fopen("F:\\g.txt","rb"); dou
c#隐式转换显示转换
(1) 隐式转换:一般是低类型向高类型转化,能够保证值不发生变化。 隐式数值转换: 从 sbyte 到 short、int、long、float、double 或 decimal。 从 byte 到 short、ushort、int、uint、long、ulong、float double 或 decimal。 从 short 到 int、long、float、double 或 decimal。 从 ushort 到 int、uint、long、ulong、float、double 或 decimal。 从
C#设置double类型的数据的保存位数
C#保留有效位数的小数
解决double类型运算结果有误的问题
-
double 类型的有效位
// double has 53 bit significant, therefore 2^53=9007199254740992 // is the largest integer that can be represented. For a floating // point value, that consumes more than 16 characters may re
数据库查询字段类型为double类型和float类型时遇到的坑
对于小数型的字段,我们常用double类型和float类型,但是这两种类型使用的时候有很大差别,下面我们来看一下 在设计数据表时,突然发现原来FLOAT原来是很不靠谱的,所以在这里建议大家换成DOUBLE类型, 原因是: 在数据库中的所有计算都是使用双精度完成的,使用float(单精度)会有误差,出现意想不到的结果。 在我们查询数据时,查询字段sumper值为5.54,sql语句:select *...
C# 准确输出double类型值
-
C#中,double类型的精度问题(最好都看看)
double类型的精度是15位,也就是说,它对数值的描述是有一个范围的,那么,超出这个范围,就会出现一个误差,这个误差,会造成数据计算的失误,大家或许会觉得,15位,足够用了,但其实不对,大家平常就会用到,注意下面的例子: double i = 0.0; while (i < 10) { i += 0.1; Console.WriteLine(i.ToString()
double :数据类型保留两位小数,不足补0,满10进1
double :数据类型保留liangwen double d = 12.2289; java.text.DecimalFormat df = new java.text.DecimalFormat("#.00"); System.out.println(df.format(d));
double类型赋值问题
double类型赋值问题        double d=1;屏幕显示: d=1.0        double d=1/2;屏幕显示: d=0.0        double d=1.0/2; 屏幕显示: d=0.5        double d=1/2.0; 屏幕显示: d=0.5不知道缘由 研究中....找了一些文章中说,在两个数之间做乘或者除的时候如果要想使结果的精度保持不变。一定要在
c#中Double类型的使用场景
【Double】 double类型在程序中定义变量会经常使用,如果使用不当,会导致实际值精度问题出现,例子如下:            Double d1 = 66.09; Double d2 = 89.943; Double d3 = 156.033; d2 = d1 + d2; //两个double 类型相加的结果是:15...
c# 问题:输入一个double, 输出时只显示小数点后三位
编一个程序,定义三个double类型的变量,分别从键盘上输入值给它们,然后用Console.WriteLine方法把它们输出成一列,小数点对齐,保留3位小数。using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; name...
限制文本框只能输入double类型
限制文本框只能输入double类型的代码案例!
matlab中用imshow()显示double类型图像中出现的问题
在matlab中,我们常使用imshow()函数来显示图像,而此时的图像矩阵可能经过了某种运算。在matlab中,为了保证精度,经过了运算的图像矩阵I其数据类型会从unit8型变成double型。如果直接运行imshow(I),我们会发现显示的是一个白色的图像。这是因为imshow()显示图像时对double型是认为在0~1范围内,即大于1时都是显示为白色,而imshow显示uint8型时是0~2
如何将double型数值转换为16进制的形式
昨天编程序遇到一个随机生成的uid,怎么都不知道怎么生成的,最后用了HttpAnalyzerstdv7查了一下,原来是在js中生成的,为了模拟js,笔者将其内部函数看了一下,发现有代码中有一double型变量,将其转换成为了16进制,当时那个纠结啊,浪费了那么多时间也没想明白那些a,b,c,d和数字怎么出来的。还是问了一下老师,老实说可能是16进制。笔者最后做了实验,发现真的是这样。不多说,将源代
double类型数据长度太长,在jsp页面的处理
网上搜索了很多,double类型数据长度
关于DOUBLE类型不显示科学计数法!!
假如有一个entity对象,其中很多属性的类型都是DOUBLE,一但位数很多时,页面显示就会以科学计数法显示。rn现在我不想用科学计数法显示,也不想必变他的类型,应该怎么办呢?rn看了网上很多办法都是将其转成STRING类型 就是用DecimalFormat。这样转的话结果是STRING 类型,就存不到我的entity对像里了,因为entity里面存的是DOUBLE类型的。rnrn另外我用的STRUTS2框架rn页面是这个写的rnrnrnrn不知道页面能不能直接转呢?
Java Double类型如何不科学计数法显示
今天遇到个很棘手但难以解决的问题!就是关于Double显示科学计数法问题! 比如10000000.21的Double类型 却显示成10.00000021E7  其实如果这个用String 类型输出的话很容易解决。 如:
double类型变量值超千万显示问题
double类型变量值 > 千万显示有问题 例:19000800会显示成:1.90008E7 需要转换 DecimalFormat df = new DecimalFormat("0.00"); System.out.println(df.format(1.90008E7)); 输出结果:19000800 http://blog.csdn.net/zelda002/article/de
C#实现基本的矩阵数学库
C#实现基本的矩阵数学库,一些常用的操作等
关于double类型的输入/输出格式 作者:Sunny_ideal
double (双精度浮点型)类型是C语言的基本类型之一,占有8个字节最大可以表示到1.7*10^308,一般情况下,都可以满足程序的需要。    好了,下面来说一下他的输出格式吧!    double 常规输出为%lf(注意float类型输出为%f) 例如:定义double a = 1.0;输出用printf("%lf",a);     但是double类型在默认情况下,输出小
double类型如果小数点后为零显示整数否则保留
方法一: /** * double类型如果小数点后为零显示整数否则保留 返回String * @param num * @return */ public static String doubleTrans(double num){ String number1 = String.format(&quot;%.6f&quot;, num);//只保留小数点后6位 doubl...
double类型的数据保留2位小数
//使用 DecimalFormat 类(import java.text.DecimalFormat;) double o = (10+11*0.8+14*0.5)/87*100; System.out.println(new DecimalFormat(&quot;.##&quot;).format(o)+&quot;%&quot;); 输出:29.66%  
double类型输出,不以科学计数法方式输出
在Java语言中,当直接输出一个double类型的数据时,默认是按科学计数法输出,此时如果想与其他数据进行比较的时候,就比较麻烦了。 因此,如果能手动设置输出的模式,就比较方便了。有两种方式, 1、格式化输出,代码如下: public class TestDouble2String { public static void main(String[] args) { Double do
如何计算double类型的百分比
本人在接口测试的过程中,遇到一个需求,统计接口请求成功的百分比,以便后期做统计,因为我的请求次数和成功次数都是以int类型存储的,百分比要以double类型两位小数存储,在网上到了一些办法,很多都是转的string类型,然后截取或者使用固定格式去转化,个人觉得并不可取,看起来会比较繁琐。自己想了一些,决定用强制类型转换来处理这个问题,下面是自己写的方法。分享出来供大家参考。 /** * 获取
C#中将double变量格式化为字符串,且保留小数点后面的全部位数
原文: http://www.crifan.com/csharp_format_double_to_string_with_dicimal_point/ 【问题】 C#中已经获得一个double变量值,比如1343392590725.6758,然后想要将其转换为字符串,且保留全部的小数点后的4位,但是结果却是: ? 1 2 3 4 5 6 7 8
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
文章热词 图像修复显示细节 实战数据显示数值 C# C#学习 C#培训
相关热词 c++ double类型的最大值 c#关于子类构造函数 c# 关于cad的类库 关于python培训班 关于区块链的课程