Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Chuyển từ CString sang Float bị mất dữ liệu

  1. #1
    Ngày gia nhập
    03 2011
    Bài viết
    50

    Mặc định Chuyển từ CString sang Float bị mất dữ liệu

    Mình có 1 đoạn code như thế này, dùng editbox để nhập dữ liệu vào sau đó tính toán nó. Nhưng test thử thì thấy nếu nhập vào số 12,5 kết quả L1 máy sẽ nhận là 12 thôi. Phải làm thế nào để nó nhận toàn bộ ?
    Vì làm bằng MFC nên editbox không chỉnh được data type, ai biết chỉ giùm mình cách convert với
    Code:
    #include <cstdlib>
    #include <tchar.h>
    CString s1;
    GetDlgItemTextW(IDC_EDIT1,s1);
    float L1 = _tstoi(s1);

  2. #2
    Ngày gia nhập
    04 2008
    Nơi ở
    Bốn bề là nhà
    Bài viết
    697

    Bạn thử nhập 12.5 xem sao.

  3. #3
    Ngày gia nhập
    03 2011
    Bài viết
    50

    Trích dẫn Nguyên bản được gửi bởi G.Perelman Xem bài viết
    Bạn thử nhập 12.5 xem sao.
    Mình đã nhập là 12.5 lẫn 12,5 đều không được rồi

  4. #4
    Ngày gia nhập
    03 2011
    Bài viết
    67

    Trích dẫn Nguyên bản được gửi bởi Athrun Xem bài viết
    Vì làm bằng MFC nên editbox không chỉnh được data type!!!
    Bạn nhầm lẫn hơi bị lớn đấy
    Editbox của MFC hoàn toàn có thể là float,int,....Code của bạn là đi một đường vòng.

  5. #5
    Ngày gia nhập
    03 2011
    Bài viết
    50

    Trích dẫn Nguyên bản được gửi bởi quandaso Xem bài viết
    Bạn nhầm lẫn hơi bị lớn đấy
    Editbox của MFC hoàn toàn có thể là float,int,....Code của bạn là đi một đường vòng.
    Nếu khai báo biến như vậy thì phải lấy biến như thế nào? Lúc trước mình dùng lệnh GetDlgItemText hoặc GetDlgItemInt thì nó chỉ nhận dữ liệu vào là CString hoặc Int thôi. Nhưng mình cần đầu vào là float thì phải làm sao ?

  6. #6
    Ngày gia nhập
    03 2011
    Bài viết
    67

    Mặc định Chuyển từ CString sang Float bị mất dữ liệu

    Giả sử ở trong sự kiện ấn vào nút OK và mình nhập một số 12.5 vào EditBox. Thì lệnh trong nút ấn OK sẽ là:
    Visual C++ Code:
    1. void CCalulatorDlg::OnBnClickedOk()
    2. {
    3.     UpdateData(); //Cập nhật giá trị từ EditBox vào biến
    4.     m_Variable=m_Variable * 12; //Nhân giá trị m_Variable với 12
    5.     UpdateData(FALSE); //Đưa giá trị mới của  m_Variable hiển thị lại EditBox
    6. }
    Cái bạn cần đơn giản là hàm
    Visual C++ Code:
    1. UpdateData();
    Tuy nhiên trong một số trường hợp thì vẫn cần phải chuyển từ một xâu sang float. Bạn có thể làm như sau:
    C++ Code:
    1. #include <sstream>
    2. #include <iostream>
    3. using namespace std;
    4.  
    5. bool stringToFloat(float & t, const string & s)
    6. {
    7.   istringstream iss(s);
    8.   return !(iss >>dec>> t).fail();
    9. }
    10.  
    11. int main()
    12. {
    13.   float f;
    14.   string str="12.5";
    15.   if(stringToFloat(f, str))
    16.   {
    17.     cout << f <<endl;
    18.   }
    19.   else
    20.   {
    21.     cout << "Convert to Float Failed" <<endl;
    22.   }
    23.   return 0;
    24. }
    Chuyển đổi từ CString sang string
    Visual C++ Code:
    1. CString cstr("12.5");
    2. std::string str((LPCTSTR)cstr);
    Chuyển đổi từ string sang CString:
    Visual C++ Code:
    1. std::string str("12.5");
    2. CString cstr(str.c_str());
    Đã được chỉnh sửa lần cuối bởi quandaso : 26-10-2011 lúc 04:07 PM.

Các đề tài tương tự

  1. Bài tập C++ Hàm Chuyển Phân Số Sang float
    Gửi bởi xuannam2620 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 29-10-2012, 09:10 PM
  2. Chuyển dổi số thập phân có dấu(float) sang nhị phân và ngược lại
    Gửi bởi huyphoon trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 19-09-2012, 09:09 PM
  3. Chuyển đổi kiểu từ Cstring có dạng : 6.591E+02 sang Float
    Gửi bởi camuoi288 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 0
    Bài viết cuối: 20-04-2011, 03:52 PM
  4. Chuyển Xâu sang giá trị float và Double?
    Gửi bởi gacongnghiep_cs trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 18-03-2011, 08:26 AM
  5. chuyển đổi sang dạng sắp xếp (int n, float *a) ? help me
    Gửi bởi bqonline trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 22
    Bài viết cuối: 24-02-2009, 07:41 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn