热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

将整数向上舍入为3的倍数-Roundupanintegertomultipleof3

Iwouldliketoroundanintegeruptoitsclosestmultipleof3.Example:我想将整数舍入到其最接近的3的倍数。示例:va

I would like to round an integer up to its closest multiple of 3. Example:

我想将整数舍入到其最接近的3的倍数。示例:

var numberOne= 2
var numberTwo = 7
  • numberOne rounded up would equal 3
  • numberOne四舍五入等于3

  • numberTwo rounded up would equal 9
  • numberTwo四舍五入等于9

I do not want it to ever round down.

我不希望它永远倒下。

Any ideas? Thanks

有任何想法吗?谢谢

5 个解决方案

#1


11  

I got this working in a Playground:

我让它在游乐场工作:

import Foundation

func roundToThree(value: Int) -> Int{
    var fractiOnNum= Double(value) / 3.0
    let roundedNum = Int(ceil(fractionNum))
    return roundedNum * 3
}

roundToThree(2)
roundToThree(7)

#2


11  

My 2 ct:

我的2克拉:

func roundUp(value: Int, divisor: Int) -> Int {
    let rem = value % divisor
    return rem == 0 ? value : value + divisor - rem
}

#3


0  

I implemented it this way:

我这样实现了它:

func roundUp(value: Int, divisor: Int) -> Int {
    let modulo = value % divisor
    var multiplier = value / divisor
    if modulo > 0 {
        ++multiplier
    }
    return divisor * multiplier
}

The function calculates:

该函数计算:

  • modulo: the modulo of the division of the value by the divisor
  • 模数:除数除以值的模数

  • multiplier: the integer division of the value by the divisor
  • 乘数:乘以除数的整数除法

  • if modulo is greater than zero, the multiplier is incremented
  • 如果modulo大于零,则乘数递增

  • the resulting value is the divisor multiplied by the multiplier
  • 结果值是除数乘以乘数

Using integers only, this algorithm should be faster than any other based on floating point calculations.

仅使用整数,此算法应该比基于浮点计算的任何其他算法更快。

I made the divisor a parameter, you can optionally decide to remove it and replace it in teh function body with the 3 literal, or assign it a default value:

我将除数设为参数,您可以选择将其删除并将其替换为函数体中的3字面值,或者为其指定默认值:

func roundUp(value: Int, divisor: Int = 3) -> Int 

#4


0  

A swift3 Float extension with a configurable multiplier (adapted from the accepted answer from @erdekhayser)

带有可配置乘法器的swift3 Float扩展(改编自@erdekhayser接受的答案)

extension Float {
    func roundUpTo(multiplier: Int) -> Int{
        let fractiOnNum= self / Float(multiplier)
        return Int(ceil(fractionNum)) * multiplier
    }
}

#5


0  

This is like Martin R's answer but works by rounding to the nearest multiple and not just by rounding up

这就像Martin R的答案,但是通过四舍五入到最接近的倍数而不仅仅是四舍五入

Swift 3/4

func roundUp(value: Double, divisor: Double) -> Double {
    let rem = value.truncatingRemainder(dividingBy: divisor)
    if(rem >= divisor / 2)
    {
        return rem == 0 ? value : value + divisor - rem
    }
    else
    {
        return rem == 0 ? value : value - rem
    }
}

推荐阅读
  • vue使用
    关键词: ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • “你永远都不知道明天和‘公司的意外’哪个先来。”疫情期间,这是我们最战战兢兢的心情。但是显然,有些人体会不了。这份行业数据,让笔者“柠檬” ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
author-avatar
黄霖hy
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有