SwiftUI数值计算的方法
SwiftUI数值计算的方法

SwiftUI数值计算的方法

1、常见取余方法

1、整数取余运算符 %

适用类型:Int 类型。

作用:计算整数除法的余数。

符号规则:与除数(右操作数)的符号一致。

示例

let intRemainder = 10 % 3  // 输出: 1
let negativeRemainder = -10 % 3  // 输出: -1

2、truncatingRemainder(dividingBy:)

适用类型:Double 和 Float。

作用:浮点数除法的余数。

符号规则:与被除数(左操作数)的符号一致。

示例

let remainder = 7.5.truncatingRemainder(dividingBy: 2.0)  // 输出: 1.5

2、模运算相关

1、remainder(dividingBy:)

适用类型:Double 和 Float。

作用:返回两个浮点数相除的数学模(modulo)。

示例

let remainder1 = 7.5.remainder(dividingBy: 2.0)  // 输出: -0.5
let remainder2 = -7.5.remainder(dividingBy: 2.0)  // 输出: 0.5

计算过程

1、7.5 ÷ 2.0 = 3.75 ,最接近的整数商是 4。

余数: 7.5 – 2.0 × 4 = 7.5 – 8 = -0.5 。

2、-7.5 ÷ 2.0 = -3.75 ,最接近的整数商是 -4。

余数: -7.5 – 2.0 × (-4) = -7.5 + 8 = 0.5 。

3、与整数或小数相关的方法

1、floor

作用:返回小于等于当前值的最大整数。

示例

let floorValue = floor(7.8)  // 输出: 7.0
let floorNegative = floor(-7.8)  // 输出: -8.0

2、ceil

作用:返回大于等于当前值的最小整数。

示例

let ceilValue = ceil(7.8)  // 输出: 8.0
let ceilNegative = ceil(-7.8)  // 输出: -7.0

3、round

作用:返回最接近的整数,如果值正好在两者之间,选择靠近 0 的值。

示例

let roundValue = round(7.5)  // 输出: 8.0
let roundNegative = round(-7.5)  // 输出: -8.0

4、rounded

作用:将一个浮点数取整到离 0 最近的整数。

示例

let positiveNumber: Double = 3.7
let negativeNumber: Double = -3.7

print(positiveNumber.rounded(.towardZero)) // 输出 3
print(negativeNumber.rounded(.towardZero)) // 输出 -3

4、其他辅助方法

1、modf(_:)

作用:分解浮点数,返回整数部分和小数部分的元组 (整数部分, 小数部分)。

示例

let number = 7.8
let (integerPart, fractionalPart) = modf(number)
print(integerPart)  // 输出: 7.0
print(fractionalPart)  // 输出: 0.7999999999999998

:出现 0.7999999999999998 的现象是因为浮点数精度问题,这是计算机中表示和操作小数时常见的限制。

如果仅用于显示,可以限制小数位数:

print(String(format: "%.1f", fractionalPart))  // 输出: 0.8

2、abs(_:)

作用:返回绝对值,适用于整数和浮点数。

示例

let absoluteValue = abs(-7.5)  // 输出: 7.5

3、clamp(手动实现)

Swift 没有内置 clamp,但可以通过扩展实现一个,用于将值限定在某个区间。

extension Comparable {
    func clamped(to limits: ClosedRange<Self>) -> Self {
        min(max(self, limits.lowerBound), limits.upperBound)
    }
}

let clampedValue = (-10.0).clamped(to: 0...100)  // 输出: 0.0

4、isMultiple(of:)

作用:用于判断一个整数是否是另一个整数的倍数。它是 Int 和其他整数类型的实例方法,返回一个布尔值 (true 或 false)。

示例

let number = 12

print(number.isMultiple(of: 3))  // true,因为 12 是 3 的倍数
print(number.isMultiple(of: 5))  // false,因为 12 不是 5 的倍数
print(number.isMultiple(of: 1))  // true,所有整数都是 1 的倍数
print(number.isMultiple(of: 12)) // true,12 是自己的倍数

总结

1、整数取余 %:整数取余,结果为整数。

2、truncatingRemainder(dividingBy:):浮点数取余,符号与被除数一致。

3、remainder(dividingBy:):浮点数取模。

4、floor:向下取整。

5、ceil:向上取整。

6、round:四舍五入。

7、modf:分解整数和小数部分。

8、abs:取绝对值。

9、clamp:限制区间。

这些方法常用于数值计算、动画控制和循环逻辑。根据需求选择合适的工具,可以提高代码的简洁性和效率。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注