簡體   English   中英

如何知道數字是否大於iPhone Objective-C中的最大值

[英]How to know if a number is larger then the maximum value in iphone objective-c

在這里和Google上閱讀一些帖子,找不到實質性的答案。 假設我有一個最大的數字,而我必須求助於一個變量。 當我有一個用戶可以在其中輸入數字的GUI時,就會出現問題。 當我得到數字然后將其分配給變量時,如何知道用戶將在字段中輸入的值(讓我們在UItextField中思考),如果數字更大,則它們最大的類型的var我會有溢出和不一致的數字。 其他情況是我必須具有一些價值觀,而我必須總結所有。 如果總和更大,則變量I將再次溢出。

如何將用戶輸入的值與變量類型的最大值進行比較? 我知道有一個mim和max的constats,但是如果有人有示例代碼會有所幫助。

如果將數據存儲在普通的unsigned int中,則可以表示的最大數字為~0

如果您真的很想讓用戶輸入任意高的數字,則可以考慮使用任意精度算術。

示例庫是BigDigits和GNU MPFR。 這些都是純C語言,因此適合包含在Objective-C項目中。

您也沒有提到是否使用整數值或浮點數。

限制用戶可以輸入的位數,使用可以容納所有用戶數字的整數類型檢查溢出(必要時浮點數)。

如果您不能限制每個數字,則將INT_MAX(在大多數使用Cocoa的平台上為2147483647)使用long long(在大多數平台上,最大值為0x7fffffffffffffffLL)。 這樣可以容納更多數字,然后任何人都可以輸入。如果必須乘以,就需要檢查溢出。

checkint.h中的宏對此非常有用。

或者,您可以使用NSDecimalNumber(38位數字,外加一個指數)。

或者,您可以尋找bignum軟件包。

您期望什么輸入? 您的數字真的需要多大? 您是否真的需要處理非常大的值,還是僅產生可見的故障消息,而不僅僅是溢出時的錯誤值? 如果只是“錯誤消息,不是錯誤答案”,則使用int / long / long long和checkint.h之后。

使用NSNumberFormatter並將最大值最小值適當地設置為要放入輸入的類型的大小。

這很簡單。 您不知道用戶將鍵入多少值,但是您知道基於保存該變量的數據類型所允許的最大值。

你選擇一種方式...

1)用戶需要輸入如此大的值,然后我需要使用此數據類型的變量來捕獲它們。

要么

2)如果我聲明此特定數據類型的變量,則僅允許用戶輸入數據類型允許的最大值。 在這種情況下,您必須將輸入字段限制為適當的數字長度。 而且,在檢查值是否大於變量可以容納的值之前,不必將其分配給變量。

請記住,您知道每種數字數據類型的最大值。 通常在頭文件中為它們聲明了常量。
祝好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM