ios - Swift - 从 Double 中自行获取最接近的十分之一的提醒
问题描述
我有一个视频,我需要将秒和毫秒分开,并将毫秒四舍五入到最接近的十分之一。如果视频持续时间从4.333333333333333秒开始,我用floor(num * 10) / 10
它来达到4.3。当我尝试自己使用.truncatingRemainder(dividingBy: 1)
和/或modf(num).1
我不断获得0.2999999999999998而不是0.3时。为什么会这样?
let mixCompositionDuration = CMTimeGetSeconds(mixComposition.duration)
print("mixCompositionDuration: ", mixCompositionDuration) // 4.333333333333333
let dubl = Double(mixCompositionDuration)
print("dubl: ", dubl) // 4.333333333333333
let mixCompositionRoundDown = floor(dubl * 10) / 10
print("mixCompositionRoundDown: ", mixCompositionRoundDown) // 4.3
let remainder = mixCompositionRoundDown.truncatingRemainder(dividingBy: 1)
print("remainder: ", remainder) // 0.2999999999999998
let mod = modf(mixCompositionRoundDown)
print("mod: ", mod) // (4.0, 0.2999999999999998)
let modRemainder = mod.1
print("modRemainder: ", modRemainder) // 0.2999999999999998
解决方案
推荐阅读
- byte - 如何使用 ClojureScript 从 pdf 文件创建字节向量?
- php - 在codeigniter中映射数据
- python - 在 MacOS 上使用 cx_freeze 打包的 tkinter GUI 会导致黑色 GUI
- python - python中的复杂数据类型
- python - 如何计算当前时间Python的总分钟数
- vue.js - 如何将对象数据从 vue 组件发送到 vuex 存储?
- xslt - 如何在 XSLT 中忽略完整日期函数中的月份
- javascript - 来自json数据的Vue Js复选框模型
- java - 使用tomcat proxyhost时,如何在Java Web应用程序中的Web浏览器的URL中获得真正的主机
- python - Alexnet 精度差