当前位置:  技术问答>linux和unix

整数和浮点数怎么达到无精度损耗互换.

    来源: 互联网  发布时间:2016-08-11

    本文导语:  把一个数24.12345转换成三整数24 07 406 在把这三整数转换成浮点数, 怎么达到无精度损耗互换代码如下: 代码如下: //测试双精度数转换实验 #include  #include  int main(){ double db1 = 24.12345,db2,db3; int iSub1,iSub2,iSub3,iSub4;...

把一个数24.12345转换成三整数24 07 406 在把这三整数转换成浮点数,
怎么达到无精度损耗互换代码如下:

代码如下:
//测试双精度数转换实验
#include 
#include 

int main(){
double db1 = 24.12345,db2,db3;
int iSub1,iSub2,iSub3,iSub4;
iSub1 = (int)floor(db1);
db2 =(db1 - iSub1)*60;                 //这个需求,将度转换为分
iSub2 =(int)(db2);    
iSub3 = (int)floor((db2-iSub2)*1000);  //取三位即可

printf("%02d,%02d,%02dn",iSub1,iSub2,iSub3);   //输出24,07,406

 //在把iSub1,iSub2,iSub3整数转换成浮点数
  
db3 = (double)iSub1+((double)iSub2+(double)iSub3/1000)/60;
printf("%fn",db3);       //输出24.123433333 跟24.12345有点区别,怎么才可以达到无精度损耗转换.

    return 0;
}

输出24.123433333 跟24.12345有点区别,怎么才可以达到无精度损耗转换

|
这样转换当然有损耗啦,你使用2,5或它们的任何组合积作为基数(比如10,25等),就不会有损了。

也可以把数字转换成字符串,再转换回数字,除非你的数字有效位非常多,否则能实现无损转换。

|
那你自己个结构体吧。

|
内存共享原理

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Bitsets 成员 to_ulong():返回bitset的整数表示
  • 将一串整数分割成单个整数数组,怎么做较快?
  • c#匹配整数和小数的正则表达式
  • awk的数字计算,能指为long long 64位整数么?
  • sprintf如何格式化64位的无符号整数
  • 如何使程序(字符界面)接受用户输入的一个浮点数,并把他的整数部分和小数部分分别输出。
  • 多精度整数和理性的算术加密库 MIRACL
  • 多精度整数和有理数 MPIR
  • 为什么javascript中某些字符串转换为整数不正确?
  • 如何把一个浮点数分整数和小数显示?
  • 关于linux下的C编程中,整数转换成字符的问题,谢谢各位!
  • 字符串转换为整数
  • 请问在linux下如何将整数变成char类型?
  • long类型不是64位有符号整数么??怎么还出错???
  • 如何在Linux shell下判断一个变量的值是否为整数?
  • 如何判断字符串是否为整数类型?
  • 正则文本框只能输入正整数
  • 编写一段B-Shell脚本程序,读入10个整数,打印它们的累加和
  • 谁能帮我写写shell脚本 :从键盘输入三个整数,计算其中的最小值!
  • 请教将字符类型转化为整数类型的函数,多谢!
  • c++ 一个二进制串转化为整数的解决方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3