Trong trường hợp chung, bạn không thể làm điều này: người dùng có thể cũng đầu vào, nói 123
, trong nhiều một cách:
123
123.00
1.23e2
12.3E1
123.0e+00
1230e-1
v.v.Khi bạn chuyển đổi các đầu vào sử dụng vào double
bạn mất định dạng ban đầu:
string userInput = ...
// double is just 123.0 whatever input has been
double value = double.Parse(userInput);
Trong trường hợp bạn muốn thả mũ nếu có thể bạn có thể
double value = 11111111111111111111;
string result = value.ToString("#######################");
Và, xin vui lòng, thông báo, rằng double
có 64 bit để lưu trữ giá trị, đó là lý do tại sao một biến dạng là không thể tránh khỏi đối với số lớn:
// possible double, which will be rounded up
double big = 123456789123456789123456789.0;
// 1.2345678912345679E+26
Console.WriteLine(big.ToString("R"));
// 123456789123457000000000000
Console.WriteLine(big.ToString("###########################"));
Có thể bạn muốn BigInteger
thay vì double
:
using System.Numerics;
...
BigInteger value = BigInteger.Parse("111111111111111111111111111111111");
// 111111111111111111111111111111111
Console.WriteLine(value.ToString());
Nguồn
2016-11-02 10:25:18
Nếu bạn muốn có một chuỗi, cửa hàng sử dụng đầu vào như chuỗi. – Pikoh
chỉ '.ToString()'? –
Nếu bạn muốn một giá trị [chính xác] (http://stackoverflow.com/q/588004/11683) những gì người dùng đã nhập, 'double' không phải là lựa chọn của bạn. – GSerg