Muszę zaimplementować funkcję plusa na ostatnim miejscu po przecinku, np.

print(plusOne(0.0001)) -> 0.0002
print(plusOne(0.000001)) -> 0.000002
print(plusOne(22)) -> 23

Czy ktoś kiedykolwiek to zrobił?

2
Nawin Poolsawad 14 czerwiec 2021, 07:35

3 odpowiedzi

Najlepsza odpowiedź

Możesz uzyskać wartość nieruchomości ulp i dodać ją:

let decimal1 = Decimal(string: "0.0001")!
let next1 = decimal1 + decimal1.ulp  // 0.0002
let decimal2 = Decimal(string: "0.000001")!
let next2 = decimal2 + decimal2.ulp  // 0.000002
let decimal3 = Decimal(string: "22")!
let next3 = decimal3 + decimal3.ulp  // 23

Lub po prostu zdobądź właściwości nextUp lub nextDown

decimal1.nextUp  // 0.0002
decimal2.nextUp  // 0.000002
decimal3.nextUp  // 23

decimal1.nextDown // 0
decimal2.nextDown // 0
decimal3.nextDown // 21
6
Leo Dabus 14 czerwiec 2021, 05:35
func plusOne(_ num : Decimal) -> Decimal{ 
  return num.nextUp
}

print(plusOne(0.0001))
print(plusOne(0.000001))
print(plusOne(22)) 

Wynik :-

0.0002
0.000002
23
0
Mohammed Abdul Basith 14 czerwiec 2021, 08:04

truncatingRemainder(dividingBy:) Pomoże Ci znaleźć rozwiązanie. Zapoznaj się z poniższym fragmentem kodu.

let x:Double = 1234.5678

let decimalPart:Double = x.truncatingRemainder(dividingBy: 1)    //0.5678
let integerPart:Double = x.rounded(.towardZero)                   //1234
0
Hitesh Surani 14 czerwiec 2021, 05:04