Diễn Đàn

iOS Bạn sử dụng sin, cos và tan như thế nào?

NS

MrPenguin9

Áp phích gốc
Ngày 1 tháng 8 năm 2008
  • Ngày 13 tháng 5 năm 2009
Làm thế nào để bạn sử dụng sin, cos và tan trong sdk iPhone? Và làm thế nào để bạn sử dụng nghịch đảo của chúng?

Cảm ơn

SilentPanda

Người điều hành danh dự
8 tháng 10, 2002
Rừng tre


  • Ngày 13 tháng 5 năm 2009
Tôi đoán bạn chỉ cần sử dụng các phiên bản C của cos, sin và tan. NS

MrPenguin9

Áp phích gốc
Ngày 1 tháng 8 năm 2008
  • Ngày 13 tháng 5 năm 2009
Tôi có thể có một ví dụ về điều đó xin vui lòng.

Cảm ơn

PhoneyDeveloper

Ngày 2 tháng 9 năm 2008
  • Ngày 13 tháng 5 năm 2009
Mã: x = sin(y);
Còn gì nữa không?

Hãy thử nhập mã này vào thiết bị đầu cuối hoặc google nó

con người tội lỗi NS

MrPenguin9

Áp phích gốc
Ngày 1 tháng 8 năm 2008
  • Ngày 13 tháng 5 năm 2009
Nhưng khi tôi thực hiện 'tan (1)' trong xcode, nó trả lại cho tôi 1556013989!?!? Nhưng tan của 1 là 0,017455 ... Tôi đang làm gì sai?

Cảm ơn NS

Ron C

Ngày 18 tháng 7 năm 2008
Chicago-khu vực
  • Ngày 13 tháng 5 năm 2009
Có mùi giống như một loại vấn đề

MrPenguin9 đã nói: Nhưng khi tôi thực hiện 'tan (1)' trong xcode, nó trả lại cho tôi 1556013989!?!? Nhưng tan của 1 là 0,017455 ... Tôi đang làm gì sai?

Cảm ơn

1556013989? Nó có thể chỉ đang in một giá trị được định dạng dấu phẩy động dưới dạng số nguyên mà không có chuyển đổi kiểu?

Bạn nhận được hàm tan () này từ bao giờ? toán học.h? Ví dụ, loại tan () trả về là gì? Nó mất radian hay độ? Bạn đang lưu trữ giá trị trả về vào kiểu nào?

Tôi đã kiểm tra trang người đàn ông cho tan () và nó nói:
Mã: #include double tan(double x); long double tanl(long double x); float tanf(float x); DESCRIPTION The tan() function computes the tangent of x (measured in radians). Vì vậy, .... hàm duy nhất phù hợp với chữ ký đó nhận một kép (chuyển đổi tự động) và trả về một kép (cũng chuyển đổi tự động) và lấy radian.

Bạn đang xem giá trị như thế nào? Mã của bạn trông như thế nào?

CHỈNH SỬA: Tôi vừa kiểm tra giá trị của tan (1 radian) trong Calculator.app - nó cho biết: 1.557408. Vậy ... tại sao bạn nghĩ nó phải là 0,017455? Đó là giá trị của tan (1 ĐỘ) NS

MrPenguin9

Áp phích gốc
Ngày 1 tháng 8 năm 2008
  • Ngày 13 tháng 5 năm 2009
Đây là mã của tôi từ MainView.m Mã: #import 'MainView.h' @implementation MainView -(void)awakeFromNib { Text.text = [NSString stringWithFormat:@'%d', tan(1)]; } @end (Ồ, và tôi không biết rằng tan (x) tính bằng radian.) Cảm ơn các bạn đã giúp đỡ! NS

Guiyon

Ngày 19 tháng 4 năm 2008
Cambridge, MA
  • Ngày 13 tháng 5 năm 2009
MrPenguin9 đã nói: - (void )akenFromNib {
Text.text = [NSString stringWithFormat '% d', tan (1)];
}

Có vấn đề của bạn, tan trả về một đôi nhưng chuỗi định dạng% d yêu cầu một số nguyên. Thay đổi '% d' thành '% lf' sẽ khắc phục điều đó. Gõ 'man 3 printf' ở đầu cuối sẽ cung cấp cho bạn nhiều thông tin hơn về các chuỗi định dạng kiểu printf mà Apple (và rất nhiều thư viện khác) sử dụng; tìm phần bắt đầu bằng 'Chuỗi định dạng bao gồm không hoặc nhiều chỉ thị' NS

Ron C

Ngày 18 tháng 7 năm 2008
Chicago-khu vực
  • Ngày 14 tháng 5 năm 2009
Lưu ý nhanh về chuyển đổi tự động và sự kỳ lạ của dấu phẩy động ...

Guiyon cho biết: Có vấn đề của bạn, tan trả về giá trị gấp đôi nhưng chuỗi định dạng% d lại yêu cầu một số nguyên. Thay đổi '% d' thành '% lf' sẽ khắc phục điều đó. Gõ 'man 3 printf' tại terminal sẽ cung cấp cho bạn nhiều thông tin hơn về các chuỗi định dạng kiểu printf mà Apple (và rất nhiều thư viện khác) sử dụng; tìm phần bắt đầu bằng 'Chuỗi định dạng bao gồm không hoặc nhiều chỉ thị'

Những chuyển đổi kiểu 'ma thuật' này không xảy ra trừ khi trình biên dịch biết rằng phải có một. Một trường hợp mà nó sẽ không biết là trong mã như stringWithFormat: - nó không thực sự biết rằng phải có một chuyển đổi, vì vậy nó vui vẻ chuyển dọc theo một đoạn kép. Một khi bạn bắt đầu chơi với các loại dấu phẩy động, bạn cần chú ý đến điều đó.

Một lưu ý ngắn gọn khác về các loại dấu phẩy động. Đừng viết mã như: Mã: double a,b; ... if (a == b) { ... Vấn đề với các kiểu dấu = và dấu phẩy động là chúng rất khó có thể bằng nhau. Thậm chí một cái gì đó như: Mã: float a,b,c,prod1,prod2; ... // compute values for a, b, and c prod1 = a*b*c; prod2 = c*b*a; if (prod1 == prod2) { ... Trên bảng trắng của bạn, những con số này giống nhau. Bên trong máy tính, chúng không nhất thiết phải như vậy. Thật kỳ lạ, nhưng bạn cần phải làm quen với nó. NS

MrPenguin9

Áp phích gốc
Ngày 1 tháng 8 năm 2008
  • Ngày 15 tháng 5 năm 2009
Nó đã làm việc.

Cảm ơn tất cả các bạn đã giúp tôi!