UVa 11809 - Floating-Point Numbers
2016-03-29 23:59
239 查看
十进制转二进制存储需要几位
m*2^e=a*10^b;
log10(m)+e*log10(2)=log10(a)+b;
m=1-2^(-i-1)
e=2^j-1
m*2^e=a*10^b;
log10(m)+e*log10(2)=log10(a)+b;
m=1-2^(-i-1)
e=2^j-1
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> using namespace std; double f[10][35]; char s[100]; double a,c; int b; void fuc() { double m=1,e; for(int i=0;i<=9;++i) { m/=2; e=1; for(int j=0;j<=30;++j) { f[i][j]=log10(1-m)+log10(2)*(e-1);//用log存储 e*=2; } } } int main() { fuc(); while(~scanf("%s",s)&&strcmp(s,"0e0")) { s[17]=' '; sscanf(s,"%lf%d",&a,&b); c=log10(a)+b; for(int i=0;i<=9;i++) { for(int j=0;j<=30;j++) { if(fabs(c-f[i][j])<1e-7) { cout<<i<<' '<<j<<endl; break; } } } } return 0; }
相关文章推荐
- SQL存储过程大全
- atoi(),atof等函数的实现
- mac 效率工具
- 数据结构之单链表的实现
- php post example
- IM4Java + GraphicsMagick 实现高清图片剪裁处理
- JAVA语言搭建白盒静态代码、黑盒网站插件式自动化安全审计平台
- 是否要用Hadoop
- 39.Oracle深度学习笔记——自动创建ASM UDEV设备脚本
- 学习前端开发
- Javascript——arguments的shift问题谈方法“借用”
- CURL使用SSL证书访问HTTPS
- 设计模式学习笔记——桥接模式
- Linux最大线程数限制及当前线程数查询
- Using Android Studio with Vuforia
- 并发学习笔记(三):join与wait/notify
- GDAL库——读取图像并提取基本信息
- 38.Oracle深度学习笔记——OS下关闭连接进程脚本
- 如何使用百度bae部署web项目
- 学习数组