iOS版本比較的精確方法

2022-03-31 22:18:04 字數 1519 閱讀 6718

**於stackoverflow.

之前一直把版本號轉換為floatvalue,但是最近在專案中又出現了float的問題,主要是

nsstring表示為@"17.30",轉換為floatvalue 值為17.299999,然後做了一些放大處理,導致不精確,就是精度少了1

所以都不敢在系統版本比較的過程中把值強制轉換為floatvalue了。

/*

* system versioning preprocessor macros

*/#define

system_version_equal_to(v

)([[[

uidevice

currentdevice

]systemversion

]compare

:v options

:nsnumericsearch]==

nsorderedsame

)#define

system_version_greater_than(v

)([[[

uidevice

currentdevice

]systemversion

]compare

:v options

:nsnumericsearch]==

nsordereddescending

)#define

system_version_greater_than_or_equal_to(v

)([[[

uidevice

currentdevice

]systemversion

]compare

:v options

:nsnumericsearch]!=

nsorderedascending

)#define

system_version_less_than(v

)([[[

uidevice

currentdevice

]systemversion

]compare

:v options

:nsnumericsearch]==

nsorderedascending

)#define

system_version_less_than_or_equal_to(v

)([[[

uidevice

currentdevice

]systemversion

]compare

:v options

:nsnumericsearch]!=

nsordereddescending)/*

* usage

*/if

(system_version_less_than

(@"4.0"

))if

(system_version_greater_than_or_equal_to

(@"3.1.1"

))

iOS版本比較方法

之前一直把版本號轉換為floatvalue,但是最近在專案中又出現了float的問題,主要是 nsstring表示為 17.30 轉換為floatvalue 值為17.299999,然後做了一些放大處理,導致不精確,就是精度少了1 所以都不敢在系統版本比較的過程中把值強制轉換為floatvalue了...

iOS版本比較方法

之前一直把版本號轉換為floatvalue,但是最近在專案中又出現了float的問題,主要是 nsstring表示為 17.30 轉換為floatvalue 值為17.299999,然後做了一些放大處理,導致不精確,就是精度少了1 所以都不敢在系統版本比較的過程中把值強制轉換為floatvalue了...

版本號比較方法

在開發中大家應該會遇到版本公升級的問題,那麼怎麼對比版本號呢?特別是有的時候版本號長度還不等 如 高版本號為6.8.0 而本地版本號為6.7.0.1 如果是一般的位數相等的版本號解決方法可以是 1.去掉版本號中的 然後轉成float等數字進行對比即可。2.迴圈挨個字元對比,遇到不等的即可break ...