Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: Cách chuyển đổi giá trị trong visual studio 2005

  1. #1
    Ngày gia nhập
    10 2007
    Bài viết
    7

    Mặc định Cách chuyển đổi giá trị trong visual studio 2005

    Em có đoạn code sau : (em sử dụng chương trình Microsoft Visual Studio 2005 - em xin lỗi nếu như em post bài nhầm box )

    Em muốn đổi từ độ phút giây ---> độ phần trăm :

    Ví dụ : 1045.8055 (độ phút giây) ---> 10.76345 (độ phần trăm) - (10+45.8055/60).

    Visual C++ Code:
    1.  //Latitude 1045.8055 ddmm.mmmm
    2.         CString dd = Latitude.Left(2);
    3.     CString mm = Latitude.Right(Latitude.GetLength()-2);
    4.     double f = _wtof((const TCHAR *)(LPCTSTR)(mm))/60;
    5.     Latitude.Format(_T("%s%f"),dd,f);
    6.     //Longtude  10640.0565 dddmm.mmmm
    7.     dd = Longitude.Left(3);
    8.     mm = Longitude.Right(Latitude.GetLength()-3);
    9.     f = _wtof((const TCHAR *)(LPCTSTR)(mm))/60;
    10.     Longitude.Format(_T("%s%f"),dd,f);

    Đoạn code trên của em bị lỗi .Các bác có thể check lỗi dùm em được không ạ?

    Em xin cám ơn.



    @admin: vì bài kia em ko sửa tiêu đề được nên em post bài mới này.Có gì mong các mod và admin thông cảm.
    Đã được chỉnh sửa lần cuối bởi Tab : 16-05-2008 lúc 09:09 PM. Lý do: Đặt lại thẻ CODE

  2. #2
    Ngày gia nhập
    10 2007
    Bài viết
    7

    Ai có thể hướng dẫn cho em cách viết code trong visual studio để đổi từ độ phút giây sang độ % được ko ?



    Sao ko có ai reply em hết vậy ?

  3. #3
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Ko hiểu ý của bạn là gì hết cả? Bạn có thể chi tiết hơn không?
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  4. #4
    Ngày gia nhập
    10 2007
    Bài viết
    7

    @Dream: dạ .

    Ý của em là :
    1. Em nhận được 2 giá trị Latitude và Longitude từ cổng COM .

    Visual C++ Code:
    1. UpdateData(1);
    2.         if (comm.get_CommEvent()==2){
    3.         VARIANT data = comm.get_Input();
    4.         tem += (CString)data.bstrVal;
    5.         if (( tem.Replace(_T("\r\n"),_T(""))))
    6.         {
    7.            
    8.             gps.nmeainfo = tem;
    9.             gps.parse();
    10.             sreceive += tem;
    11.             tem = "";
    12.             dispUTC.SetWindowTextW ( (gps.UTCTime));
    13.             dispLong.SetWindowTextW((gps.Longitude));
    14.             dispLat.SetWindowTextW((gps.Latitude));
    15.  
    16.             //xuat ra file LAT LONG
    17.              CStdioFile fff(_T("toado.txt"),CFile::modeCreate | CFile::modeWrite | CFile::typeText );
    18.              fff.WriteString(gps.Latitude);
    19.              fff.WriteString(_T(","));
    20.              fff.WriteString(gps.Longitude);
    21.              fff.Close();
    22.         }
    23.    
    24.     };
    25.     UpdateData(false);
    Em lưu 2 giá trị đó vào 2 biến là gps.Latitudegps.Longitude .
    Giá trị format (kiểu mặc định) ban đầu của nó là :
    - ddmm.mmmm với Latitude (Ví dụ : 3723.2475 - 37 độ 23.2475 phút)
    - dddmm.mmmm với Longitude (Ví dụ : 12158.3416 - 121 độ 23.2475 phút )

    Do nhu cầu của thực tế ,em muốn đổi từ độ phút giây (giá trị như bên trên) sang độ %.
    Công thức toán học để đổi là :
    3723.2475 (độ phút giây) = 37 (degree) + 23.2475 (minute)/60 = độ % .



    Và lưu giá trị mới của Latitude và Longitude(giá trị sau khi đã đổi qua độ %) vào 1 file text.

    Vì mới làm quen với visual studio nên cách xử lý việc trên em chưa biết .

    Mong được các anh chị giúp đỡ .

    Em xin cảm ơn.
    Đã được chỉnh sửa lần cuối bởi Tab : 16-05-2008 lúc 09:10 PM. Lý do: Đặt lại thẻ code

  5. #5
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    3723.2475 (độ phút giây) = 37 (degree) + 23.2475 (minute)/60 = độ % .
    Bạn dùng CString Mid( int nFirst, int nCount ) để trích xuất s1 = "37", và s2 = "23.2475" , sau đó chuyển s1 và s2 về dạng int bằng cách dùng int i1 = atoi(s1) và int i2 = atoi(s2).

  6. #6
    Ngày gia nhập
    10 2007
    Bài viết
    7

    Mặc định Cách chuyển đổi giá trị trong visual studio 2005

    Mình viết đoạn code :

    Visual C++ Code:
    1. //Latitude 3723.2475 ddmm.mmmm
    2. CString dd = Latitude.Left(1);
    3. CString mm = Latitude.Right(Latitude.GetLength()-1);
    4. double f = _wtof(Latitude.Left(1))+_wtof(Latitude.Right(Latitude.GetLength()-1))/60;
    5. Latitude.Format(_T("%s%f"),dd,f);
    6. //Longtude  12158.3416 dddmm.mmmm
    7. dd = Longitude.Left(2);
    8. mm = Longitude.Right(Latitude.GetLength()-2);
    9. f = _wtof(Latitude.Left(2))+_wtof(Latitude.Right(Latitude.GetLength()-2))/60;
    10. Longitude.Format(_T("%s%f"),dd,f);

    Thì được kết quả :
    Output Code:
    1. Latitude: 11.017157
    2. Longtitude: 1011.000286


    Mà kết quả đúng phải là : Latitude = 10.763445 và Longitude = 106.667513

    Ai có thể chỉ cho mình lỗi trên được ko?



    @void main() : Bạn có thể nói cụ thể hơn 1 chút được không ?

    Mình cám ơn bạn rất nhiều . Mong được bạn giúp đỡ .

  7. #7
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    Trích dẫn Nguyên bản được gửi bởi pisco Xem bài viết
    Mà kết quả đúng phải là : Latitude = 10.763445 và Longitude = 106.667513
    37 + (23.2475 / 60) = 37.3874583 , kết quả của cậu mâu thuẫn ?

  8. #8
    Ngày gia nhập
    10 2007
    Bài viết
    7

    Trích dẫn Nguyên bản được gửi bởi void main () Xem bài viết
    37 + (23.2475 / 60) = 37.3874583 , kết quả của cậu mâu thuẫn ?
    Dạ , cái //Latitude 3723.2475 ddmm.mmmm đó chỉ là lấy ví dụ thôi bác ạ.

    Còn kết quả thực nghiệm là :
    1045.8055 (độ phút giây) ---> 10.76345 (độ phần trăm) - (10+45.8055/60).

    1045.8055 --> kết quả trực tiếp do thiết bị nhận được
    10.76345 ---> kết quả đúng khi chuyển qua độ % (kết quả mong muốn đạt được .)

    Còn đây là kết quả do đoạn code của em viết :
    Output Code:
    1. Latitude: 11.017157
    2. Longtitude: 1011.000286

    Em không biết viết sai ở chỗ nào , mong được bác chỉ giáo thêm .

    Cám ơn bác .
    Đã được chỉnh sửa lần cuối bởi pisco : 15-05-2008 lúc 10:39 PM.

  9. #9
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    Bạn thử code này xem nhé :
    Visual C++ Code:
    1. #include <afx.h>
    2. float toFloat(CString s)
    3. {
    4.     return (float) atof(s);
    5. }
    6.  
    7. CString toString(float f)
    8. {
    9.     CString ret;
    10.     ret.Format("%f",f);
    11.     return ret;
    12. }
    13. CString convertResulft(CString strResult)
    14. {
    15.     CString s1 , s2 ;
    16.     s1 = strResult.Mid(0,2);
    17.     s2 = strResult.Mid(2);
    18.  
    19.     float fResult = atoi(s1) + toFloat(s2) / 60;
    20.  
    21.     return toString(fResult);
    22. }

  10. #10
    Ngày gia nhập
    10 2007
    Bài viết
    7

    Trích dẫn Nguyên bản được gửi bởi void main () Xem bài viết
    Bạn thử code này xem nhé :
    Visual C++ Code:
    1. #include <afx.h>
    2. float toFloat(CString s)
    3. {
    4.     return (float) atof(s);
    5. }
    6.  
    7. CString toString(float f)
    8. {
    9.     CString ret;
    10.     ret.Format("%f",f);
    11.     return ret;
    12. }
    13. CString convertResulft(CString strResult)
    14. {
    15.     CString s1 , s2 ;
    16.     s1 = strResult.Mid(0,2);
    17.     s2 = strResult.Mid(2);
    18.  
    19.     float fResult = atoi(s1) + toFloat(s2) / 60;
    20.  
    21.     return toString(fResult);
    22. }

    @Void main(): có thể hướng dẫn mình cụ thể hơn được ko?

    Vì mấy thuật toán này thật sự mình chưa có rành .

    Khi mình chèn thêm thư viện "afx.h" và đoạn code của bạn vào thì nó báo lỗi :
    error C3861: 'toFloat': identifier not found
    error C3861: 'toString': identifier not found

    ...

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

  1. tạo css trong visual studio 2005
    Gửi bởi thuan trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 4
    Bài viết cuối: 29-07-2011, 11:15 AM
  2. Cách mở file solution của visual studio 2005 trong visual web developer 2005 express?
    Gửi bởi funny_dn89 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 1
    Bài viết cuối: 19-03-2011, 12:41 AM
  3. Fix loi nay trong Visual Studio 2005 !
    Gửi bởi dvminhpro45 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 29-09-2010, 10:21 AM
  4. Cách sử dụng Visual C# trong bộ Visual Studio 2005
    Gửi bởi svcntt trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 18-07-2009, 10:44 PM
  5. tạo cơ sơ dữ liệu trong Visual studio 2005
    Gửi bởi aredspider trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 26-10-2007, 11:33 PM

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