获取第一个CGFloat类型

时间:2018-01-30 13:09:04

标签: swift string swift4 cgfloat

我在CGFloat中有以下数字

  
      
  1. 375.0
  2.   
  3. 637.0
  4.   
  5. 995.0
  6.   

我需要获取CGFloat数据类型中的第一个数字。例如,#1的结果必须为3.0#2必须为6.0#3必须为9.0

我尝试了以下

let width:CGFloat = 375.0
// Convert Float To String
let widthInStringFormat = String(describing: width)
// Get First Character Of The String
let firstCharacter = widthInStringFormat.first
// Convert Character To String
let firstCharacterInStringFormat = String(describing: firstCharacter)
// Convert String To CGFloat
//let firstCharacterInFloat = (firstCharacter as NSString).floatValue
//let firstCharacterInFloat = CGFloat(firstCharacter)
//let firstCharacterInFloat = NumberFormatter().number(from: firstCharacter)

这里似乎没有任何作用。我哪里错了?

更新

要回答 @Martin R ,请在下面找到我的解释

我正在使用UICollectionView实现网格视图(如照片应用)。我希望根据iPhone / iPad,纵向和横向的屏幕尺寸调整单元格的大小。基本上我不想要固定的列。我需要更多的列用于更大的屏幕尺寸,更少的列用于更小的屏幕尺寸。我想也许我可以根据屏幕宽度来决定。例如,如果屏幕宽度为375.0,则显示3列,如果大约600,则显示6列,如果大约1000,则显示10列,依此类推,宽度相等。所以我想出的是a)根据屏幕尺寸的第一个数字确定列,然后根据实际屏幕宽度划分宽度。例如,对于375.0的屏幕宽度,我的单元格大小为CGSize(width: screenWidth / totalColumn),依此类推。

2 个答案:

答案 0 :(得分:1)

 var floatNum:CGFloat = 764.34
    var numberNeg = false
    if floatNum < 0{
        floatNum = -1.0 * floatNum
        numberNeg = true
    }
    var intNum = Int(floatNum)
    print(intNum) //764
    while (intNum>9) {
        intNum = Int(intNum/10)
    }
    floatNum = CGFloat(intNum)
    if numberNeg {
        floatNum = -1.0 * floatNum
    }
    print(intNum)//7
    print(floatNum)//7.0

尝试这个...我希望它能够正常工作

答案 1 :(得分:1)

你说:

  

例如,如果屏幕宽度为375.0,则显示3列,如果大约600,则显示6列,如果大约1000,则显示10列,依此类推宽度等等。

那么你真正想要的不是宽度的第一个数字(这会是 例如1width = 1024而不是所需的10) 但宽度除以100并向下舍入到下一个整数值:

let numColumns = (width / 100.0).rounded(.down)

或者,作为整数值:

let numColumns = Int(width / 100.0)