是这样的,我在 OI 出题中,std 习惯使用 double,但是求解,在大数据的情况下用 long double,小数据用 double

虽然这样也没什么问题,但是在 std 中我是不开启 -O2 的,但洛谷的环境是默认 -O2 的。然后有一次我再核对 std 时,我发现 double 在 O2 和不 O2 的情况下,大数据的结果是不一样的,可以给一个例子。

测试代码:

#include <bits/stdc++.h>
using namespace std; int main(){
long double x;
double dx; cin >> x;
cin >> dx; x += 114514.1919;
dx += 114514.1919; printf("LONG DOUBLE: %Lf\nDOUBLE: %lf", x, dx);
}

输入:

15151578734687
15151578734687

输出:

LONG DOUBLE: 15151578849201.191900
DOUBLE: 15151578849201.191406

经过测试,在开不开启 O2 的情况下,double 都会出现问题。

所以,在大数据的情况下,为了精度, long double 是更好的选择。

经过更多的测试后,发现 double 在代码复杂性较低的情况下,优化产生的误差较小,但在复杂度高的情况下,误差可能会达到 \(10^3\)。

所以推荐使用 long double。就酱紫。我也不会复杂的,这是一个应对方法。

论 C++ 中 double 类型的优化问题的更多相关文章

  1. Java中double类型的数据精确到小数点后两位

    Java中double类型的数据精确到小数点后两位 多余位四舍五入,四种方法 一: double f = 111231.5585;BigDecimal b = new BigDecimal(f); d ...

  2. struts2中Double类型的转换

    今天做项目,ssh + Extjs,页面js中定义了几个NumberField,对应的value都是double类型的,其中有个NumberField的name为 name,结果执行的时候报错了,说找 ...

  3. JAVA中double类型运算结果异常的解决

    问题: 对两个double类型的值进行运算,有时会出现结果值异常的问题.比如: System.out.println(19.99+20); System.out.println(1.0-0.66); ...

  4. 程序中double类型的数输出为什么要用lf

    在c89和c++中double的输入和输入输出都用%lf 在c99中,double的输出必须用%f,而输入要用%lf oIER一般使用c++,所以输出直接%lf即可.

  5. hbase中double类型数据做累加

    public static Result incr(String tableFullName, String rowKey, String family, String qualifier, long ...

  6. java中double类型显示两个小数,比如12.00

    Double类型的数据如何保留两位小数? 各位大虾,现有Double类型的数据,如何转换为保留两位小数的数,返回值的类型仍然是Double类型的,而不是字符串类型. 比如     0,返回“0.00” ...

  7. 关于java中Double类型的运算精度问题

    标题     在Java中实现浮点数的精确计算    AYellow(原作) 修改    关键字     Java 浮点数 精确计算   问题的提出:如果我们编译运行下面这个程序会看到什么?publi ...

  8. Java中Double类型计算问题

    public class Test{    public static void main(String args[]){        System.out.println(0.05+0.01);  ...

  9. 关于java中Double类型的运算精度问题(转)

    Java Java double:浮点数:精确计算  public class Test{    public static void main(String args[]){        Syst ...

  10. Java中Double类型数据比较大小

    方法一:转成字符串之后比较 如果要比较的两个double数据的字符串精度相等,可以将数据转换成string然后借助string的equals方法来间接实现比较两个double数据是否相等.注意这种方法 ...

随机推荐

  1. ex命令

    ex命令 ex命令用于在Ex模式下启动vim文本编辑器,ex执行效果如同vi -e,如要从Ex模式回到普通模式,则在vim中输入:vi或:visual指令即可,可以通过运行vi -e来启动ex,也可以 ...

  2. Centos7安装php7.4

    添加 EPEL and REMI 仓库 yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarc ...

  3. harbor镜像仓搭建相关问题

    1 环境 自己生成了SSL证书 证书目录与 harbor.cfg 文件中定义的路径需要一致 使用的是offline 包安装 执行 install.sh 脚本后,通过浏览器远程访问成功, 但是在别的机器 ...

  4. APScheduler可能遇到的问题

    uWsgi使用多进程模式启动Django项目,因此我们会有多个进程去执行这个定时任务,导致定时任务被重复执行.解决这个问题的方法,我们直接就会想到采用加锁的方式.第一个拿到锁的进程,执行定时任务,其余 ...

  5. 第12章_MySQL数据类型

    目录: https://www.cnblogs.com/xjwhaha/p/15844178.html 1. MySQL中的数据类型 类型 类型举例 整数类型 TINYINT.SMALLINT.MED ...

  6. Java 重写equals

    1 package com.bytezreo.objectclass; 2 /** 3 * 4 * @Description 重写equals 5 * @author Bytezero·zhengle ...

  7. Learning by teaching --- 费曼学习法

    世界上存在成千上万种学习法,如果上天只让我掌握一种,那一定就是"费曼学习法". 介绍 费曼学习法是由诺贝尔物理学奖获得者理查德·费曼提出的一种学习方法,其核心思想是将所学内容用自己 ...

  8. Mysql数据库未添加索引引发的生产事故

    最近开发的新功能主要是首页的红点提示功能,某个用户登录系统app,然后进入某一个功能模块, 在该功能下面有很多地方可以操作,新功能就是根据用户信息查询当月是否存在新的数据.总共有四五 个地方如果出现增 ...

  9. [VueJsDev] 目录列表

    [VueJsDev] 目录列表 云服务器域名就一年,gitee上有不给发布,没办法 https://www.vuejsdev.com/ 还是迁移到博客园吧. 文章大部分是2022年9月份左右写的. 已 ...

  10. react start 后 url 后面不带/ 解决思路

    > navigator@0.1.0 dev H:\2020home\giteez\navigator > node scripts/start.js Compiled successful ...