// 添加千分位的函数(解决余数不足三位要补0的BUG)
func addMicrometerLevel(valueSwift:String) ->String{
// 判断传入参数是否有值
ifvalueSwift.characters.count!=0{
/**
创建两个变量
integerPart : 传入参数的整数部分
decimalPart : 传入参数的小数部分
*/
varintegerPart:String?
vardecimalPart =String.init()
// 先将传入的参数整体赋值给整数部分
integerPart = valueSwift
// 然后再判断是否含有小数点(分割出整数和小数部分)
ifvalueSwift.contains(".") {
letsegmentationArray = valueSwift.components(separatedBy:".")
integerPart = segmentationArray.first
decimalPart = segmentationArray.last!
}
/**
创建临时存放余数的可变数组
*/
letremainderMutableArray =NSMutableArray.init(capacity:0)
// 创建一个临时存储商的变量
vardiscussValue:Int32=0
/**
对传入参数的整数部分进行千分拆分
*/
repeat{
lettempValue = integerPart!asNSString
varremainderValue =0
//解决余数不足三位要补0的BUG
iftempValue.intValue >= 1000{
// 获取商
discussValue = tempValue.intValue / 1000
// 获取余数
remainderValue =Int(tempValue.intValue % 1000)
// 将余数一字符串的形式添加到可变数组里面
varremainderStr =String.init(format:"%d", remainderValue)
ifremainderStr.count==1{
remainderStr ="00"+ remainderStr
}else if remainderStr.count==2{
remainderStr ="0"+ remainderStr
}
remainderMutableArray.insert(remainderStr, at:0)
// 将商重新复制
integerPart =String.init(format:"%d", discussValue)
}else{
// 获取余数
remainderValue =Int(tempValue.intValue%1000)
// 将余数一字符串的形式添加到可变数组里面
letremainderStr =String.init(format:"%d", remainderValue)
remainderMutableArray.insert(remainderStr, at:0)
// 将商重新复制
integerPart =String.init(format:"%d", discussValue)
break
}
}whilediscussValue>0
// 创建一个临时存储余数数组里的对象拼接起来的对象
vartempString =String.init()
// 根据传入参数的小数部分是否存在,是拼接“.” 还是不拼接""
letlastKey = (decimalPart.characters.count==0?"":".")
/**
获取余数组里的余数
*/
foriin0..
// 判断余数数组是否遍历到最后一位
let param = (i != remainderMutableArray.count-1?",":lastKey)
tempString = tempString +String.init(format:"%@%@", remainderMutableArray[i]as!String,param)
}
// 清楚一些数据
integerPart =nil
remainderMutableArray.removeAllObjects()
// 最后返回整数和小数的合并
returntempStringasString+ decimalPart
}
returnvalueSwift
}
网友评论