PDA

View Full Version : Cần giúp đỡ cách chuyển dấu . thành số thập phân!!



.Joe.
28-09-2011, 06:21 PM
Chào các bạn ITVNN.NET. Mình đang học XML, khi làm bài tập, bị vướng chỗ này, mong các bác giúp đỡ.

Vd: Em nhập 12.99
Khi em dùng double.parse ==> Nó sẽ ra thành 1299

Em muốn hỏi các pác làm sao để khi nhập 12.99 --> Nó hiểu là thập phân

Rất mong nhận được sự giúp đỡ của các bạn.

HTT.itvn
28-09-2011, 09:37 PM
Cái bài này làm mình nhớ lại thời đi học . Cô cũng ra đề phân biệt số thập phân trong C . Nghĩ mãi không ra giải thuật ( vì thời năm nhất ham chơi hơn ham học ) nên dùng mẹo thế này .

Đầu tiên nhân số nhập vào với 10 , sau đó chia cho 10 nếu dư thì là số thập phân . Giả sử có số cần nhập như thế này :



float a,b ;
a = 12.89;
b = 12.89*10;
if ( b%10 == 0 )
{
printf " Số nguyên ";
}
else
{
print " Số thập phân ";
}

.Joe.
28-09-2011, 10:28 PM
Cám ơn anh đã giúp đỡ. Nhưng trường hợp input là kiểu số thì làm cách đó ok.
Nhưng input của em là 1 thằng String. Khi em Convert nó về số thì khi em nhập 12.99, nó sẽ ra thành 1299 ( mất luôn dấu . mà không hiểu dc nó là thập phân ). Mong nhận được sự giúp đỡ! :)

HTT.itvn
28-09-2011, 10:36 PM
Cám ơn anh đã giúp đỡ. Nhưng trường hợp input là kiểu số thì làm cách đó ok.
Nhưng input của em là 1 thằng String. Khi em Convert nó về số thì khi em nhập 12.99, nó sẽ ra thành 1299 ( mất luôn dấu . mà không hiểu dc nó là thập phân ). Mong nhận được sự giúp đỡ! :)

String là kiểu text thì em phải convert sang biến float , code dạng như thế này :



float bien1;
bien1 = Convert.ToSingle(bien2.Text);


Bien2 là kiểu string em đã khai báo ở text-box nhé .

Em có thể sử dụng kiểu biến đổi ngầm như sau :


string bien1;
float bien2 = bien1;

Tương đương :


string bien1;
float bien2 = (float)bien1;

Hoặc kiểu kế thừa lớp - tường minh ( Object ) :


string bien1;
float bien2 = bien1.ToFloat();

Tùy vào độ dài nhị phân mà em có thể sử dụng các cách trên nhé .

.Joe.
29-09-2011, 06:22 PM
float bien1;
bien1 = Convert.ToSingle(bien2.Text);

Với đoạn này. Khi em nhập 12.99 ( Lưu ý là 12 chấm 99, ko phải 12 phẩy 99). Biến 1 đã có giá trị là 1299 rùi. Do đó dù chuyển ngầm định hay object gì nó cũng vô tác dụng anh ạh.

HTT.itvn
29-09-2011, 06:33 PM
float bien1;
bien1 = Convert.ToSingle(bien2.Text);

Với đoạn này. Khi em nhập 12.99 ( Lưu ý là 12 chấm 99, ko phải 12 phẩy 99). Biến 1 đã có giá trị là 1299 rùi. Do đó dù chuyển ngầm định hay object gì nó cũng vô tác dụng anh ạh.


Em cần phải chỉnh region trong máy là US , chứ để VN thì nó hiểu dấu chấm là dấu phân cách . Nếu em để region là VN thì phải gõ dấu phẩy thay dấu chấm .

Em thử cách ngầm định và tường minh còn lại xem sao nhé .

hanhkhat
29-09-2011, 09:20 PM
Mình dùng code c# thấy chạy tốt

class Program
{
static void Main(string[] args)
{
string s = "12.34";
double a = double.Parse(s);

double aa = a + 11.11;
Console.WriteLine(a);
Console.WriteLine(aa);
Console.ReadKey();
}
}
4645

.Joe.
15-10-2011, 10:25 AM
Xin lỗi vì để topic này lâu vậy, do em bận wa'. Rất cám ơn các anh đã hướng dẫn em. Em kiểm tra rùi, do Hệ Thống của em mặc định dấu phẩy là thập phân khi code trên console, nên em làm hoài vẫn ko dc. Sau khi điều chỉnh, em đã hoàn thành xong bài tập này. Một lần nữa xin cám ơn ITvnn.net rất nhiều