2012-11-10 57 views
1
In this web i see that all answer about thins like converting decimal number to  binary 
its refers number without point in the number(int)... 
i want to know how to convert the decimal number with point like "332.434" to binary in c# 

爲例,我看到:我如何轉換十進制數字與指向二進制數在C#中?


using System; 

namespace _01.Decimal_to_Binary 
{ 
    class DecimalToBinary 
    { 
     static void Main(string[] args) 
     { 
      Console.Write("Decimal: "); 
      int decimalNumber = int.Parse(Console.ReadLine()); 

      int remainder; 
      string result = string.Empty; 
      while (decimalNumber > 0) 
      { 
       remainder = decimalNumber % 2; 
       decimalNumber /= 2; 
       result = remainder.ToString() + result; 
      } 
      Console.WriteLine("Binary: {0}",result); 
     } 
    } 
} 

的爲例指從int轉換不點

感謝

回答

1

只需使用一個BitConverter來獲取字節,然後遍歷它們轉換那些字符串並將當前的位串添加到前一個位。

byte[] byteArray = BitConverter.GetBytes(MyDouble); 
string ByteString = System.String.Empty; 
for (int i = 0; i < byteArray.Length; i++) 
    ByteString = Convert.ToString(byteArray[i], 2).PadLeft(8, '0'); 

您可能必須做一些修修補補來獲得正確的順序位,但我認爲BysteString將左邊的高位。下面是該ToString方法的MSDN頁面http://msdn.microsoft.com/en-us/library/8s62fh68.aspx

-1

不能簡單地將非整數轉換爲二進制格式。例如。對於3.145926,計算機保持一個符號(+/-),一個數字本身,但總是有一個零(0.3141596)和一個尾數(E-1)。所以你需要保留所有3個部分。在wikipedia中閱讀更多http://en.wikipedia.org/wiki/Floating_point#Representable_numbers.2C_conversion_and_rounding

+1

這是一個簡單的任務。浮點數如何以二進制表示的複雜性對將其轉換爲位串的難度沒有影響。該過程與其他任何基本類型沒有區別。獲取字節,然後將它們轉換爲位串。 – evanmcdonnal

相關問題