Ios 双精度百分之检查值

Ios 双精度百分之检查值,ios,swift,double,nsnumber,Ios,Swift,Double,Nsnumber,我有一个四舍五入到最接近百分之一的数字。我希望能够检查第一百个位置的值。有没有一种简单的方法来检查swift中的特定位置 例如: 如果值为123.07,我希望能够找到7位数字的值 因此,在类似的情况下: 双倍(123.07)。百分之一=7 还是我必须做一些类似的事情 var value = 123.07 value *= 10 //value is now 1230.7 value % 1 试着确保我用正确的方式做事,而不是我唯一知道的方式:)我会这样做: var value = 123.07

我有一个四舍五入到最接近百分之一的数字。我希望能够检查第一百个位置的值。有没有一种简单的方法来检查swift中的特定位置

例如: 如果值为123.07,我希望能够找到7位数字的值

因此,在类似的情况下: 双倍(123.07)。百分之一=7

还是我必须做一些类似的事情

var value = 123.07
value *= 10
//value is now 1230.7
value % 1

试着确保我用正确的方式做事,而不是我唯一知道的方式:)

我会这样做:

var value = 123.07;
var hundredth = ((value * 10) - floor(value * 10)) * 10; //floor rounds down
123.07.hundredth
因此,它变成:(1230.70-1230.00)*10=7.00


记住,保持简单

使用
modf
功能,可将其简化为:

let hundredth = round(modf(value).1 * 100)
如果要经常使用,可以创建一个扩展:

extension Double {
    var hundredth: Int {
        return Int(round(modf(val).1 * 100))
    }
}
…并像这样使用它:

var value = 123.07;
var hundredth = ((value * 10) - floor(value * 10)) * 10; //floor rounds down
123.07.hundredth

这是一个完美的回复——它解决了我的问题,并且是第一个发布的。@Charlie好极了!我认为这是一个恰当的答案,因为它不仅简单,而且还提供了实际发生的情况的概念。保持简单是我面临的最大困难‘再次感谢:)它不会给你7,它会给你一个接近7的双倍值。可能更大,可能更小,不太可能精确到7。我喜欢为这个做扩展的想法,必须尝试让自己做得更舒服。感谢您的回复,我的直觉告诉我您的答案是最可靠的解决方案。
modf
函数是合适的解决方案,因为浮点数的奇怪行为。为了让您的答案更“快速”,您可以删除
get{…}
,只使用
var-hundredth:Int{return…}