My_A 发表于 2019-3-24 00:58:43

双精度浮点数赋值

ld 为什么显示0

wp231957 发表于 2019-3-24 10:24:21

据资料显示:long double应该用LF 或者Lf

My_A 发表于 2019-3-24 15:23:12

wp231957 发表于 2019-3-24 10:24
据资料显示:long double应该用LF 或者Lf

用了,但还是显示0.0000000

wp231957 发表于 2019-3-24 17:00:36

#include<stdio.h>

int main()
{
   long doublea;
   a=0.123456789000;
   printf("=====%.12llf\n",a);
   return 0;
}


c++10.0 编译 可以得到正确结果LF 不可以,但Lf 可以 (你试一下)

=====0.123456789000

wp231957 发表于 2019-3-24 17:07:46

#include<stdio.h>

int main()
{
   long doublea;
   a=0.1234567890007899552122;
   printf("=====%.22Lf\n",a);
   printf("=====%.22llf\n",a);
   return 0;
}

e:\>new
=====0.1234567890007899500000
=====0.1234567890007899500000

这两个都可以 ,但是 后面4位已经丢失了失真了

My_A 发表于 2019-3-24 17:23:11

wp231957 发表于 2019-3-24 17:07
e:\>new
=====0.1234567890007899500000
=====0.1234567890007899500000


还是不行

wp231957 发表于 2019-3-24 17:35:12

1.浮点数不能用==来比较
2.你是用的神马编译器

My_A 发表于 2019-3-24 17:39:05

Qt 自带的 MinGW 64位

My_A 发表于 2019-3-24 17:49:36

wp231957 发表于 2019-3-24 17:35
1.浮点数不能用==来比较
2.你是用的神马编译器

它会Warning ,但可以执行,如果1.111不加f就不执行if语句

wp231957 发表于 2019-3-24 17:53:29

浮点数不存在相等的概念,只能是差值达到一个满意度,就认为一样了

My_A 发表于 2019-3-24 17:55:56

wp231957 发表于 2019-3-24 17:53
浮点数不存在相等的概念,只能是差值达到一个满意度,就认为一样了

那为啥显示为0,我看网上说是Windows不支持long double的输出

wp231957 发表于 2019-3-24 18:50:06

终于搞定了,5楼的代码 在微软的c++10.0下 是能够通过的(单位电脑上)

但是 在家里的电脑上(gcc/mingw 8.1)却是始终无法通过
下面的代码
#include<stdio.h>

int main()
{
   long doublea;
   a=0.1234567890007899552122;
   printf("=====%.22Lf\n",a);
   printf("=====%.22llf\n",a);
   return 0;
}


运行结果:
E:\>a
=====0.1234567890007899487737
=====0.0000000000000000000000
可见,gcc 是不支持%llf的,仅仅支持%Lf
而且在我电脑上 同样后面几位数据都失真了
下面是重中之重:
E:\>gcc -posix new.c    需要-posix参数 才是

wp231957 发表于 2019-3-24 18:54:34

My_A 发表于 2019-3-24 17:55
那为啥显示为0,我看网上说是Windows不支持long double的输出

这事和windows 无关   windows被你躺枪了
long double 是c99提出来的一种数据类型,那么只要编译器支持c99 就可以使用long double

My_A 发表于 2019-3-24 19:00:17

wp231957 发表于 2019-3-24 18:50
终于搞定了,5楼的代码 在微软的c++10.0下 是能够通过的(单位电脑上)

但是 在家里的电脑上(gcc/mingw ...

-posix 是什么参数?

wp231957 发表于 2019-3-24 19:07:45

你先看看管不管用吧,其实网上搜到的资料是使用-ansi 参数但是实测无效

wp231957 发表于 2019-3-24 19:09:17

E:\>gcc new.c

E:\>a
=====0.0000000000000000000000
=====0.0000000000000000000000

E:\>gcc -ansi new.c

E:\>a
=====0.0000000000000000000000
=====0.0000000000000000000000

E:\>gcc -posix new.c

E:\>a
=====0.1234567890007899487737
=====0.0000000000000000000000

My_A 发表于 2019-3-24 19:12:55

wp231957 发表于 2019-3-24 19:07
你先看看管不管用吧,其实网上搜到的资料是使用-ansi 参数但是实测无效

-posix 管用,但不知道甚么意思

wp231957 发表于 2019-3-24 20:23:41

去官网溜达一圈   奈何E文太差   实在是找不到自己想知道的东西,以后再说吧

My_A 发表于 2019-3-24 20:28:31

wp231957 发表于 2019-3-24 20:23
去官网溜达一圈   奈何E文太差   实在是找不到自己想知道的东西,以后再说吧

行吧,谢谢
页: [1]
查看完整版本: 双精度浮点数赋值