社区讨论
使用long double来做高精度计算,结果只能得40%的分,这是怎么回事?
学术版参与者 8已保存回复 28
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 28 条
- 当前快照
- 1 份
- 快照标识符
- @lo3hvh20
- 此快照首次捕获于
- 2023/10/24 06:54 2 年前
- 此快照最后确认于
- 2023/10/24 06:54 2 年前
最近,我正在研究高精度计算。这几天,我先后用本算法 AC 了 P1601 A+B Problem(高精) 和 P1303 A*B Problem。
不过,我并没有善罢甘休。昨天,我无意识地翻了翻 C++ 书,竟惊喜地发现,长双精度实型
long double 可以表示绝对值范围在约 ~ 的一切实数!“不是结果最多才 吗,我何不用 long double 来解决上述两个问题呢?”我想。说干就干,我为 P1601 写了如下代码:
CPP#include<bits/stdc++.h>
using namespace std;
long double a,b;
int main(){
scanf("%Lf%Lf",&a,&b);
printf("%.Lf",a+b);//即%.0Lf
}
我信心满满地提交了代码,却只得了 分!
是这样吗?我不信!我随及为 P1303 写了如下代码:
CPP#include<bits/stdc++.h>
using namespace std;
long double a,b;
int main(){
scanf("%Lf%Lf",&a,&b);
printf("%.Lf",a*b);//仅仅改动了此处
}
可是,我再次只得了 分!
我查阅了网上,没有发现
CPPlong double 的问题;又看了看评测记录,发现都是错在从左往右第 位数左右,如悬浮在 WA 上看到的如下内容(从 column 20 即可看出是 位):Wrong Answer.wrong answer On line 1 column 20, read 8, expected 5.
难道投机取巧真会遭致这么严重的后果吗?long double 的第 位到底为什么错了?
回复
共 28 条回复,欢迎继续交流。
正在加载回复...