【高精浮点】关于long double的使用方法

您所在的位置:网站首页 scanf怎么输入double型 【高精浮点】关于long double的使用方法

【高精浮点】关于long double的使用方法

2024-07-12 15:00| 来源: 网络整理| 查看: 265

本文于 2023.3.17 更新并添加部分内容。 本文于 2023.4.13 修改关于 long double 的字节数和精度。

听说今天桂林CCPC计算几何卡了double,就来学一下更高精的浮点long double。

文章链接:

long double 使用方法long double 高精度数据的使用 总结:

性质:

double 占 8 字节;long double 有 16 字节、12 字节、8 字节,其中 16 字节占大多数,因为 ANSI C 标准并未规定 long double 的确切精度,所以对于不同平台可能有不同的实现。

double 能精确有效数字的 14 或 15 位;long double 的精确位数要看平台和编译器具体实现。经测试,在我的电脑(long double 12 字节)和洛谷在线 IDE (long double 16 字节)能精确到 18 或 19 位左右。以下是在一些不同编译器上的测试代码:

GNU C++17 (64):https://codeforces.com/contest/1816/submission/201913463

GNU C++20 (64):https://codeforces.com/contest/1816/submission/201913498

GNU C++17:https://codeforces.com/contest/1816/submission/201913535

Clang++17 Diagnostics:https://codeforces.com/contest/1816/submission/201913549

MS C++ 2017:https://codeforces.com/contest/1816/submission/201913729

圆周率前 30 位为:3.14159265358979323846264338327,可以自行比较。

写代码注意事项:

输入输出:long double 可以用 scanf,printf 或者 cin,cout 输入输出。如用前者,则使用方法如下:

输入: scanf("%Lf", &a);

输出: printf("%.10Lf", a);

函数:long double 的常用函数都要在末尾加个 l , 如fabsl(a) , sqrtl(a) , cosl(a) , … 。这种函数涉及到浮点数的话,都是 long double 类型的。举例如图:

在这里插入图片描述

常量:C++ 中一般的浮点数常量默认类型为 double 。如果在浮点数常量末尾加上字符 l ,则类型为 long double 。举例如图: 在这里插入图片描述 在这里插入图片描述 关于桂林这种卡精度的题需要注意的事项:

整数输入到浮点数中是没有精度损失的,叉乘可以直接根据==0来判断是否为零。测试代码

当要求输出答案精度较大时,为了防止误差累加累乘,最好用long double。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3