2012-08-08 63 views
7

khi tôi làm điều này:giá trị tối đa cho loại phao trong C#

float x = float.MaxValue; 

tôi có kết quả: 3.40282347E + 38

là gì E + 38? làm thế nào tôi có thể đại diện cho số lượng tối đa mà không có biểu tượng này?

msdn nói RANGE: ± 1,5 × 10^−45 đến ± 3,4 × 10^38, nhưng điều đó không giúp ích gì cho tôi.

+0

Bạn có muốn thể hiện điều này trong một chuỗi? Bạn có ý nghĩa gì bởi "đại diện"? –

Trả lời

18

Các "E + 38" định dạng là mặc định. Nếu bạn muốn xem toàn bộ số, chỉ định một định dạng khác nhau như thế này:

float.MaxValue.ToString("#") 

này sẽ cho kết quả:

340282300000000000000000000000000000000 

Dưới đây là một số định dạng khác: http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.aspx

+0

Không sao cả. Nếu bạn muốn dấu phẩy, sử dụng '" #, # "' hoặc '" N "'. – Dan

+0

"Toàn bộ số" là 340282346638528859811704183484516925440. –

+0

@Dan Câu trả lời hay nhất tôi đã thấy trong các câu hỏi như thế này. Bạn có thể chỉ cho bạn cách làm điều này trong C++ không? –

0

Đó là khoảng . 340 000 000 000 000 000 000 000 000 000 000 000 000

Nếu bạn sử dụng mã của Dan, bạn sẽ có được điều này kết quả là:

340282300000000000000000000000000000000 
7

này được E Notation đã sử dụng đôi khi được dùng với ký hiệu khoa học. Nó có nghĩa là "10 với sức mạnh của"

Từ E Notation section of the Wikipedia article on Scientific Notation:

Bởi vì số mũ superscripted như 10^7 có thể không phải luôn luôn thuận tiện trưng bày, E thư hoặc e thường được sử dụng để đại diện cho mười lần nâng lên sức mạnh của (được viết là "x 10^b") và tiếp theo là giá trị của số mũ.

Vì vậy, 3.40282347E+38 bằng 3.40282347 * 10^38

2

Đó là Scientific Notation.

5E+2 = 
5 x 10^2 = 
5 x 10 * 10 = 
5 * 100 = 
500 

Nói cách khác, đó là số thập phân bạn di chuyển dấu thập phân để tính kết quả. Hãy 5, di chuyển nó qua 2 nơi, kết thúc với 500. Trong ví dụ của bạn, bạn cần phải lấy số của bạn, 3.40282347 và di chuyển vị trí thập phân trên 38 lần!

+0

cảm ơn lời giải thích! –

5

Hãy thử đoạn mã sau:

float f = float.MaxValue; 
Console.WriteLine("Origianl Value: " + f); 
Console.WriteLine("With Zeros:" + f.ToString("0")); 

Value

Origianl Value: 3.402823E+38 
With Zeros:340282300000000000000000000000000000000 
Các vấn đề liên quan