关于小数负数丢失精度的问题
来源:互联网 发布:php魔术常量有哪些 编辑:程序博客网 时间:2024/05/16 10:37
在pat 1051中会出现这样一个问题
1051. 复数乘法 (15)
复数可以写成(A + Bi)的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i2 = -1;也可以写成极坐标下的指数形式(R*e(Pi)),其中R是复数模,P是辐角,i是虚数单位,其等价于三角形式(R(cos(P) + isin(P))。
现给定两个复数的R和P,要求输出两数乘积的常规形式。
输入格式:
输入在一行中依次给出两个复数的R1, P1, R2, P2,数字间以空格分隔。
输出格式:
在一行中按照“A+Bi”的格式输出两数乘积的常规形式,实部和虚部均保留2位小数。注意:如果B是负数,则应该写成“A-|B|i”的形式。
输入样例:
2.3 3.5 5.2 0.4
输出样例:
-8.68-8.23i
当 A或者 B小于0但是大于-0.005的这种情况 即(-0.004,-0.0001…)这一类 因为精度的缺失%.2f,它将会是四舍五入,变成-0.00,这时候我才发现,原来精度的缺失是四舍五入的变化的,
#include <cstdio>int main(){ float a=-0.006; printf("%.2f\n",a);}
这样输出的是 -0.01;
#include <cstdio>int main(){ float a=-0.003; printf("%.2f\n",a);}
这样就是-0.00;正数也是四舍五入,和除法的向下取整,不一样!!!
答案代码
#incldue <iostream>#include <cstdio>using namespace std;int main() { double r1, p1, r2, p2; cin >> r1 >> p1 >> r2 >> p2; double A, B; A = r1 * r2 * cos(p1) * cos(p2) - r1 * r2 * sin(p1) * sin(p2); B = r1 * r2 * cos(p1) * sin(p2) + r1 * r2 * sin(p1) * cos(p2); if (A + 0.005 >= 0 && A < 0) //评论区有指出因为是四舍五入所以改成A + 0.005更合适 printf("0.00"); else printf("%.2f", A); if(B >= 0) printf("+%.2fi", B); else if (B + 0.01 >= 0 && B < 0) printf("+0.00i"); else printf("%.2fi", B); return 0;}
0 0
- 关于小数负数丢失精度的问题
- 关于iOS数据解析小数丢失精度的问题AFNetworking
- 关于iOS数据解析小数丢失精度的问题AFNetworking
- Java中关于精度丢失的问题
- javascript(js)小数精度丢失的解决方案
- javascript小数精度丢失的完美解决方法
- 关于JavaScript中计算精度丢失的问题(一)
- 关于JavaScript中计算精度丢失的问题(二)
- 关于JavaScript中计算精度丢失的问题
- 关于JavaScript中计算精度丢失的问题
- 关于float相减精度丢失的问题
- 关于float型的内存存储和精度丢失问题
- 关于C++builder中精度丢失的问题
- 关于时间保存到数据库中丢失精度的问题
- 关于JavaScript中计算精度丢失的问题
- 关于float相减精度丢失的问题
- float丢失精度的问题
- double丢失精度的问题
- jar解压缩、再压缩(permission denied出错解决)
- iOS监听H5页面goBack返回事件问题
- 推荐有关微信开发的十个开源项目
- ip 多播地址 和mac多播地址隐射
- 小技巧
- 关于小数负数丢失精度的问题
- emWin学习
- 设计师应该关注的科技发展方向(三)
- UVALive 4839 HDU 3686 Traffic Real Time Query System
- Android 中自定义属性(attr.xml,TypedArray)的使用!
- 使用UIActivityViewController实现AirDrop分享
- jquery的小技巧
- 目标检测方法效果小结
- 完全背包详解