我试图在swift中分离双精度的小数部分和整数部分.我try 了很多方法,但都遇到了相同的问题...

let x:Double = 1234.5678
let n1:Double = x % 1.0           // n1 = 0.567800000000034
let n2:Double = x - 1234.0        // same result
let n3:Double = modf(x, &integer) // same result

有没有办法在不将数字转换为字符串的情况下获得0.5678而不是0.56780000000034?

推荐答案

在不将其转换为字符串的情况下,您可以将其四舍五入到小数位数,如下所示:

let x:Double = 1234.5678
let numberOfPlaces:Double = 4.0
let powerOfTen:Double = pow(10.0, numberOfPlaces)
let targetedDecimalPlaces:Double = round((x % 1.0) * powerOfTen) / powerOfTen

您的输出将是

0.5678

Swift相关问答推荐

显示第二个操作紧接在另一个操作后的工作表在SwiftUI中不起作用

为什么ClosedRange<;Int&>包含的速度比预期慢340万倍?

如何在SWIFT任务中判断当前任务是否已取消(异步/等待)

将NavigationSplitView更改为NavigationStack

使 tabview 垂直将视图移动到右侧 swift ui

如何在不提交到应用store 的情况下在本地运行我的应用

如何打印出此 struct 中的数据?

SwiftUI View Builder 参数无法更改状态

在 Swift 中实现自定义异步序列

UnkeyedEncodingContainer 和 KeyedEncodingContainerProtocol 中的 superEncoder 是什么?

如何在 Swift 中将 UILabel 居中?

快速在 LLDB 中使用 po

try 在解除分配时加载视图控制器的视图... UIAlertController

在 Swift 中,你可以用另一个字符串分割一个字符串,而不仅仅是一个字符吗?

无法推断泛型参数的参数

swift 3 如何获取明天和昨天的日期(注意特殊情况)新月或新年

Swift 中的可选数组与空数组

Swift UITableView reloadData 在一个闭包中

如何快速从另一个视图控制器重新加载表格视图

为什么枚举具有计算(computed)属性但在 Swift 中没有存储属性?