精华内容
下载资源
问答
  • [img=https://img-bbs.csdn.net/upload/202002/08/1581135650_364573.jpg][/img][img=https://img-bbs.csdn.net/upload/202002/08/1581135650_540069.jpg][/img]
  • 用%f来给double类型赋值问题

    千次阅读 2019-10-30 09:16:49
    问题描述 下面代码,不论输入x为何值,输出结果都是一个很大的不符合预期的值。 但是 1)如果将double类型换成float类型即可得到想要的结果。 2)如果将double类型的x先初始化为0 ...正确写法应该将%f换成%lf,但...

    问题描述

    下面代码,不论输入x为何值,输出结果都是一个很大的不符合预期的值。
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    但是

    1)如果将double类型换成float类型即可得到想要的结果。在这里插入图片描述
    2)如果将double类型的x先初始化为0 也可以得到想要结果
    在这里插入图片描述

    分析:

    以最初的代码,x = 0为例,一步步调试。发现,当输入x的值为0是,内存中x实际存储的并不是0,而是一个很奇怪的数字。
    在这里插入图片描述
    这是因为:
    在这里插入图片描述
    正确写法应该将%f换成%lf。如果将double转换为float也可以得到想要结果 ,不过会发生数据的截断。

    监视下如果用%f来给double类型数据赋值会发生什么
    (double八字节,float 四字节) 观察x的内存变化

    其实cc也是中文编码里面的“烫”,平时文件里面的“烫”字的出现,就是因为没有赋初值的缘故
    在这里插入图片描述
    输入0后在这里插入图片描述
    因为用%f,即float类型进行输入,所以只会改变是前四个字节(float四字节)变为0 ,后面的四个字节不变 ,所以x的值为
    在这里插入图片描述
    如果将x先初始化的话 ,x会变为00 00 00 00 00 00 00 00 即使用%f来录入也可以得到想要的结果(只是输入数据的大小范围还是float型)。

    建议在定义变量的时候最好都先初始化,因为你不知道内存中会存放什么内容,尤其是在申请内存开辟 空间时,在使用前都应该先将内存初始化。

    展开全文
  • byte b1 = 1; short s1 = 1; int i1 = 1; long l1 = 1l; // long l1 = 1;//正确,可以加L。 Byte b2 = 1; Short s2 = 1; Integer i2=1; Long l2 =...
            byte b1 = 1;
            short s1 = 1;
            int i1 = 1;
            long l1 = 1l;
    //      long l1 = 1;//正确,可以加L。
    
            Byte b2 = 1;
            Short s2 = 1;
            Integer i2=1;
            Long l2 = 1L;//必须加L。
    
    
            float f1=1.1F;//必须加F
            Float f2=1.1F;//必须加F
    //      float f1=1.1;//错误写法
    //      Float f2=1.1;//错误写法
    
    
            double d1=1.1;
            double d2=1.1D;
            Double D3=1.1;
            Double D4=1.1D;
    

    //总结:
    //1、byte(Byte)、short(Short)和int(Integer)在赋值时数值后不要加任何东西。
    //2、float(Float)在赋值时数值后必须加F(f)。
    //3、double(Double)在赋值时数值后加不加D(d)都可以。
    //4、long在赋值时数值后加不加L(l)都可以,而Long在赋值时数值后必须加L(l)。

    展开全文
  • 【报错代码】 ...//error CS0266: 无法将类型“double”隐式转换为“decimal?”。存在一个显式转换(是否缺少强制转换?) 【正确写法】 decimal one=2020.07m; //没错,就是在数字后面加一个小写m即可 ...

    【报错代码】

    decimal one=2020.07;
    //回车报错
    //error CS0266: 无法将类型“double”隐式转换为“decimal?”。存在一个显式转换(是否缺少强制转换?)

    【正确写法】

    decimal one=2020.07m;
    
    //没错,就是在数字后面加一个小写m即可

     

    展开全文
  • 11.下面赋值语句中正确的是()

    千次阅读 2019-05-19 23:53:12
    A 科学计数法,double类型赋值double正确。 B 浮点数默认类型为double,大范围不能赋值给小范围(除非强转),错误。 C double不能赋值给int(理由同b),错误。 D int虽可以转换成double,但在类型转换...
    A.double d=5.3e12;
    B.float f=11.1;
    C.int i=0.0;
    D.Double oD=3;

    答案选A

    A 科学计数法,double类型赋值给double,正确。

    B 浮点数默认类型为double,大范围不能赋值给小范围(除非强转),错误。

    C double不能赋值给int(理由同b),错误。

    D int虽可以转换成double,但在类型转换时无法进行自动装箱,故错误。

    展开全文
  • 若有以下定义和语句:double r=99, *p=&... 则以下正确的叙述是 A) 以下两处的p含义相同,都说明给指针变量p赋值 B) 在"double r=99, *p=&r;“中,把r的地址赋值给了p所指的存储单元 C) 语句”*p=r...
  • public class Test { public static void main(String[] args) { float f1 = 1.2;//报错,虚拟机默认为double float f2 = 1.2f;//正确 float f3 = 1.2F;//正确 Float f4 = 1.2;//报错,虚拟机默认为d
  • By doing <code>doubleval()</code> I'd get the right values, but the problem is that not every value is a double but also integer or string. I also tried to typecast with (string) but it's the same ...
  • 共回答了23个问题采纳率:100%0)w=a=b w的类型和a b不同,类型不同占用的存储空间和存放的寄存器也不一样,如果要赋值需重新对类型进行注释:w=(int)a=(int)b0)a=a++=5连环赋值是c和C++特有用法,顺序是从右到左依次...
  • 直接给a,b赋值正确的。 x value is 1.000000,y value is 2.000000 min is 1.000000,max is 2.000000 #include #include void change(double* x, double* y); int main(void) { double a,b; ...
  • 有以下说明语句: typedef double funt (double); funt fun13,fun14,*pfun; A:pfun=fun13; B:pfun=&fun14; C:pfun=*fun13; D:fun13=fun14;
  • ①.double[ ] myList;//此时myList还未分配空间,直到下一步  myList=new double[5]; ②.double[ ] myList=new double[5]; 以上是两种初始化的方式;   二维数组初始化: 赋值 下面说一下赋值的方式: ...
  • [F10之后,赋值竟然失败了,函数其实返回类型也是double](https://img-ask.csdn.net/upload/201706/06/1496746769_944474.png) 不知道是不是堆栈大小有关, 我在别的函数里调用,赋值操作没有问题,但是在这个地方...
  • C++_float与double

    2019-05-20 10:27:17
    小数默认是 double 双...3.4是双精度数,将双精度型(double赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F; ...
  • float和double的区别

    千次阅读 2018-07-03 13:41:34
    3.4是双精度数,将双精度型(double赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。单精度浮点数(float)与双...
  • Java中的float和double

    2020-12-12 08:16:12
    3.4是双精度数,将双精度型(double赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4或者写成float f =3.4F。 float f2 = 3.1415926999999...
  • 10.下面的数据声明及赋值哪一个是正确的? A. float f = 1.3; B. char c =; C. byte b = 257; D. int i = 10; java基础面试20题-答案解析版 正确答案是:D A中1.3默认是double类型,正确的写法应该是 ...
  • c++中double与float的区别

    千次阅读 2020-08-17 22:23:28
    3.4是双精度数,将双精度型(double赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。 (2)问题:什么时候用...
  •  第一个疑问 :指针 指向和赋值 规范的正确操作方式是什么 目前我对指针的理解程度 指针大小8 但指向的内存区域可以操作 *p=a; 这是指针指向a的内存   p=&a; 这是把a的值赋给p 8...
  • double num2;}t1,t2;若变量均已正确赋初值,则以下语句中错误的是(C) (A) t1=t2; (B) t2.num1=t1.num1; (C) t2.mark=t1.mark;//mark为结构体中的数组,不能直接赋值?? (D) t2.num2=t1.num2; ​====如题参考...
  • C++中IO操作符和赋值操作符的结合性

    千次阅读 2012-11-08 21:29:05
    在C++中,赋值操作符具有右结合性.当表达式有多个赋值操作符时,从右向左结合.如下程序: x = y = 3;编译器具体执行时是先把3的值赋给y...比如说,这样的程序是正确的: int x; double y; x = y = 3;因为double和int是可以
  • 在给float类型赋值,必须在数字的后面加上 f 或者 F ,否则会出错 float fValue = 56.7f //正确 float fValue = 56.7 //错误 C#中在操作符右边的数字将会被自动定义为double,如果不加字符f或F
  • 3.4是双精度数,将双精度型(double赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。 ...
  • 在java代码中Double checking 并不能保证代码的正确性。 原因有二:一. Object obj = new Object();会先给obj赋值,然后在调用对象的构造函数初始化内存。现在得到的obj可能没有完全构造。 二. 编译器会优化代码,...
  • 3.4是双精度数,将双精度型(double赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。 ...
  • float f=3.4 是否正确

    2018-09-09 13:51:14
    答:不正确。...3.4是双精度数,将双精度型(double赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失。 因此需要强制类型转换float f =(float)3.4; 或者写成float f=3.4F;。 ...
  • 正确。3.4是双精度数,将双精度型(double赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。
  • 3.4 是双精度数,将双精度型(double赋值给浮点型(float)属于下转型(down-casting,也称为窄 化)会造成精度损失,因此需要强制类型转换 float f =(float)3.4; 或者写成 float f =3.4F。 在java里面,没小数点...
  • 若使用Math.sqrt() ...那是因为Math.sqrt()返回正确舍入的一个double值的正平方根,若你将值赋值给不是double类型的变量,将会出现以上问题。 例子:  public class Main { public static void main(String

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 219
精华内容 87
关键字:

double正确赋值