Tôi phải làm điều gì đó thực sự rõ ràng là sai, nhưng tôi không thể nhìn thấy nó.Mục tiêu-C, làm thế nào để chuyển đổi một đôi thành int?
Trả lời
Đôi là loại C, không phải đối tượng Objective-C. Do đó bạn sử dụng C phôi:
double myDouble = 3.2;
int myInt = (int)myDouble;
Tôi tin NSDouble là C đối khách quan, hãy sửa lại cho tôi nếu tôi tôi sai. –
@ Joe D: Chỉ có NSInteger (là một typedef cho int * hoặc * long tùy thuộc vào 32/64bit), nhưng có NSNumber, kết thúc tốt đẹp các kiểu dữ liệu C vào một đối tượng. –
Chỉ cần chuyển đổi được đề cập ở trên là đủ tốt mặc dù bạn có thể muốn sử dụng các hàm floor() hoặc ceil() trước đó.
Tôi thấy điều này là quan trọng đặc biệt là trong bối cảnh của câu hỏi cần chính xác cho các khoản thanh toán. Tôi tìm thấy các số đơn giản như 230 chuyển đổi thành 229 sau khi chuyển đổi số nguyên. –
Tôi tin rằng việc sử dụng dấu phẩy động để biểu diễn giá không tốt. Cách đúng là sử dụng các số nguyên (tính theo xu, vì vậy giá $ 2 là 200) và chuyển đổi số nguyên thành "2.00" ngay trên đầu ra. Ngoài ra Cocoa cung cấp lớp NSDecimalNumber được sử dụng bởi iOS chính nó để đại diện giá. – Vladimir
intValue là phương pháp cho ví dụ NSNumber. Đối với loại tỷ lệ như int, double và float, chúng không phải là loại lớp. Vì vậy, họ không có phương pháp. Một số ngôn ngữ như C# có thể bọc int, hoặc nhân đôi như một đối tượng, và chúng có thể được chuyển giao cho nhau bởi một thường trình con.
double myDouble = 3.2;
int myInt = @(myDouble).intValue;
mẫu mã tôi thực sự sử dụng:
NSNumber * percentLike1 = @(@(self.percentLike.doubleValue*100).integerValue);
-1: Đó là một vòng xoay và cách chuyển đổi không hiệu quả. Về cơ bản, bạn đang tạo một đối tượng từ một nguyên thủy chỉ để lấy một giá trị nguyên thủy khác. Nếu bạn có điều này trong một vòng lặp, điều này có thể sẽ có một tác động đáng chú ý. – FreeAsInBeer
độ phức tạp là không đổi. Đó là tất cả những gì tôi quan tâm. Không có gì đáng chú ý. –
Mã của bạn ít phức tạp hơn hoặc thậm chí dễ đọc hơn '(int) myDouble' như thế nào? – FreeAsInBeer
- 1. Làm cách nào để chuyển đổi giá trị NSUInteger thành giá trị int trong mục tiêuC?
- 2. Làm thế nào để chuyển đổi mảng int thành int?
- 3. Đôi không chuyển đổi thành số int
- 4. Làm tròn một đôi thành int
- 5. Làm thế nào để chuyển đổi một đôi để hex?
- 6. Làm thế nào để chuyển đổi QString thành int?
- 7. Làm thế nào để chuyển đổi Integer thành int?
- 8. Làm thế nào để Chuyển đổi int [] để int [,] - C#
- 9. Làm thế nào để chuyển đổi một mảng byte thành một mảng int?
- 10. Làm thế nào để chuyển đổi IntPtr để int
- 11. Chuyển đổi từ đôi thành int sang Java như thế nào?
- 12. Chuyển đổi một chuỗi thành một đôi
- 13. Làm thế nào để chuyển đổi một vector <int> thành một chuỗi?
- 14. Làm thế nào để chuyển đổi một số thập phân thành một int trong C#?
- 15. Làm thế nào để chuyển đổi một int thành một chuỗi không đệm trong T-SQL?
- 16. Làm thế nào để chuyển đổi System.Linq.Enumerable.WhereListIterator <int> thành Danh sách <int>?
- 17. Làm thế nào để chuyển đổi một mảng byte thành đôi trong C?
- 18. Làm cách nào để chuyển đổi chuỗi C++ thành int?
- 19. OCaml - Làm cách nào để chuyển đổi int thành chuỗi?
- 20. Chuyển đổi int thành booleans
- 21. Làm thế nào để chuyển đổi một giá trị int thành chuỗi trong Go?
- 22. Làm thế nào để chuyển đổi một ASCII char thành giá trị int ASCII của nó?
- 23. Cách chuyển đổi int * thành int
- 24. Làm thế nào để chuyển đổi int để QString?
- 25. làm thế nào để chuyển đổi int để UINT
- 26. Làm thế nào tôi có thể chuyển đổi một Int thành một CString?
- 27. Chuyển đổi một đôi đến một int trong Javascript mà không làm tròn
- 28. Làm thế nào để kiểm tra xem một đôi có thể được chuyển đổi thành một Int32?
- 29. chuyển đổi int thành wstring
- 30. Chuyển đổi gấp đôi thành chuỗi C++?
Tôi nghĩ rằng bây giờ là một ý tưởng tốt cho bạn để tìm hiểu C: D – tadejsv