Another example use for offsetting an index, from @Ray_Fix's post
mutating func appendInterpolation<T: BinaryFloatingPoint>(_ value: T, precision: Int = 3) {
var result = String(describing: value)
defer { appendInterpolation(result) }
guard precision > 0 else { return }
let string = result
guard let index = string.firstIndex(of: ".") else { return }
let offset = precision+1
let last = string.index(index, offsetBy: offset,
limitedBy: string.endIndex) ?? string.endIndex
result = String(string[..<last])
let fraction = string[index..<last].count
if fraction < offset {
result += String(repeating: "0", count: offset-fraction)
}
}