RT 在C#中如何做到呢,(int)的话小数部分会丢失的,移位什么的要怎么做呢?
因为小数部分的二进制数是无穷的,是要取精度的,那这样怎么移位呢?我只需要保留0.01的精度
有什么算法吗?
如果可以C/C++中又是如何做的呢?
求大神指点啊~

解决方案 »

  1.   

    int怎么会有小数的。
    关注
      

  2.   

    float f= 1.2345;
    int i = (int)f*100
      

  3.   

    楼主,怎么感觉你的这个需求是矛盾的!float变int型,还保留小数位数。那还叫转吗?
    你到底想实现什么呢?
      

  4.   

    因为我要用socket传数据,要主机字节转换成网络字节,而转换的参数只能是int型数据,
    可是我输入的数据是个float型的,所以需要将输入的float型数据转换成int然后传下去,但是输入的float数据不能缺失
    我知道可以把float一段段取出来,然后再放进int型数组中往下传,但是具体怎么做不知道
      

  5.   

    哈哈。socket传送的是字节流,你搞什么int数字呢?
      

  6.   

    用字符串表示就行了,怎么还用int了
      

  7.   

    float a=12.03;
    byte[ ] byteArray = BitConverter.GetBytes(a);这样最直接、简单。
      

  8.   


    socket传的是字节流没错,但是在此之前要用IPAddress.HostNetworkOrder(a)先转成网络字节,a就必须是int型的,转换后才会用GetByte
      

  9.   

    计算机中的float 小数怎么可能是无数位了,回去看看计算机基础的书,最多只能精确到7-8位吧,不记得了显示的话可以用 
    youFloatNumber.ToString("f2");
      

  10.   

    看到LZ的问题,我想说:LZ该吃药了
      

  11.   

    这个问题很纠结,想要小数点就用float!只能这样啊
      

  12.   

    lZ脑子确定没坏吗?  有小数还叫Int吗?  
      

  13.   

    小弟是个新手,我其实就是想把一个float型数据在保留0.01位的情况下进行网络socket传输
    用byte[] arr=BitConverter.GetByres(f)后怎么把它转换成IPAddress.HostNetworkOrder(a)中的int类型呢,arr不能直接放进IPAddress.HostNetworkOrder(a)中
      

  14.   

    把float转成sring,再从string转到int,呵呵
      

  15.   

    我在C++中是这样解决的,在转换成int前,先把要转换的float类型的数乘以100,转换完以后再除以100就可以了。。