Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Comparing decimals in Swift Testing

Comparing decimals in Swift Testing

Avatar for 417.72KI

417.72KI

July 29, 2025

More Decks by 417.72KI

Other Decks in Programming

Transcript

  1. "CPVU struct Me { let name = “(redacted)” let twitter

    = "417_72ki" let gitHub = "417-72KI" let workAt = "(redacted)" let job = "Software Engineer in Mobile" let communities = ["love_swift", "Chiba.swift"] }
  2. খ਺ͷςετͷྫ ௒ࡶ import XCTest final class SampleTests: XCTestCase { func

    testExample() { let a = 0.1 let b = 0.2 XCTAssertEqual(a, 0.1) XCTAssertEqual(b, 0.2) XCTAssertEqual(a + b, 0.3) XCTAssertEqual(a - b, -0.1) XCTAssertEqual(b - a, 0.1) XCTAssertEqual(a * b, 0.02) XCTAssertEqual(a / b, 0.5) XCTAssertEqual(b / a, 2) } }
  3. খ਺ͷςετͷྫ ී௨͸΍Βͳ͍ func testExample2() { func doSomething(_ a: Int, _

    b: Int) -> Int { let tmp = Double(a) / 10 + Double(b) / 10 return Int(tmp * 10) } XCTAssertEqual(doSomething(1, 7), 8) }
  4. ௒ࡶʹղઆ %PVCMF΍'MPBU͸ුಈখ਺఺਺ w ਐ਺ͷখ਺Λਐ਺ʹม׵͢Δ w Oͷ࿨Ͱදݱ w   

       w େ఍͸៉ྷͳ਺஋ʹͳΒͳ͍ w ࣮ମ͸ద౰ͳॴͰؙΊΒΕͨۙࣅ஋Ͱܭࢉ͢Δ
  5. ରॲ๏ 9$5FTUͷ৔߹ func testExample() { let a = 0.1 let

    b = 0.2 XCTAssertEqual(a, 0.1) XCTAssertEqual(b, 0.2) XCTAssertEqual(a + b, 0.3) XCTAssertEqual(a - b, -0.1) XCTAssertEqual(b - a, 0.1) XCTAssertEqual(a * b, 0.02) XCTAssertEqual(a / b, 0.5) XCTAssertEqual(b / a, 2) }
  6. ରॲ๏ 9$5FTUͷ৔߹ func testExample() { let a = 0.1 let

    b = 0.2 XCTAssertEqual(a, 0.1, accuracy: 0.01) XCTAssertEqual(b, 0.2, accuracy: 0.01) XCTAssertEqual(a + b, 0.3, accuracy: 0.01) XCTAssertEqual(a - b, -0.1, accuracy: 0.01) XCTAssertEqual(b - a, 0.1, accuracy: 0.01) XCTAssertEqual(a * b, 0.02, accuracy: 0.01) XCTAssertEqual(a / b, 0.5, accuracy: 0.01) XCTAssertEqual(b / a, 2, accuracy: 0.01) }
  7. TXJGUUFTUJOHSFWPMVUJPOBSZͰม׵ #FGPSF import XCTest final class SwiftTestingSampleTests: XCTestCase { func

    testExample() { let a = 0.1 let b = 0.2 XCTAssertEqual(a, 0.1, accuracy: 0.01) XCTAssertEqual(b, 0.2, accuracy: 0.01) XCTAssertEqual(a + b, 0.3, accuracy: 0.01) XCTAssertEqual(a - b, -0.1, accuracy: 0.01) XCTAssertEqual(b - a, 0.1, accuracy: 0.01) XCTAssertEqual(a * b, 0.02, accuracy: 0.01) XCTAssertEqual(a / b, 0.5, accuracy: 0.01) XCTAssertEqual(b / a, 2, accuracy: 0.01) } }
  8. TXJGUUFTUJOHSFWPMVUJPOBSZͰม׵ "GUFS import Testing @Suite struct SwiftTestingSampleTests { @Test func

    example() { let a = 0.1 let b = 0.2 #expect(a == 0.1, accuracy: 0.01) #expect(b == 0.2, accuracy: 0.01) #expect(a + b == 0.3, accuracy: 0.01) #expect(a - b == -0.1, accuracy: 0.01) #expect(b - a == 0.1, accuracy: 0.01) #expect(a * b == 0.02, accuracy: 0.01) #expect(a / b == 0.5, accuracy: 0.01) #expect(b / a == 2, accuracy: 0.01) } }
  9. TXJGUOVNFSJDTΛ࢖͏ #FGPSF import Testing @Suite struct SwiftTestingSampleTests { @Test func

    example() { let a = 0.1 let b = 0.2 #expect(a == 0.1, accuracy: 0.01) #expect(b == 0.2, accuracy: 0.01) #expect(a + b == 0.3, accuracy: 0.01) #expect(a - b == -0.1, accuracy: 0.01) #expect(b - a == 0.1, accuracy: 0.01) #expect(a * b == 0.02, accuracy: 0.01) #expect(a / b == 0.5, accuracy: 0.01) #expect(b / a == 2, accuracy: 0.01) } }
  10. TXJGUOVNFSJDTΛ࢖͏ "GUFS import Testing import Numerics @Suite struct SwiftTestingSampleTests {

    @Test func example() { let a = 0.1 let b = 0.2 #expect(a.isApproximatelyEqual(to: 0.1, relativeTolerance: 0.01)) #expect(b.isApproximatelyEqual(to: 0.2, relativeTolerance: 0.01)) #expect((a + b).isApproximatelyEqual(to: 0.3, relativeTolerance: 0.01)) #expect((a - b).isApproximatelyEqual(to: -0.1, relativeTolerance: 0.01)) #expect((b - a).isApproximatelyEqual(to: 0.1, relativeTolerance: 0.01)) #expect((a * b).isApproximatelyEqual(to: 0.02, relativeTolerance: 0.01)) #expect((a / b).isApproximatelyEqual(to: 0.5, relativeTolerance: 0.01)) #expect((b / a).isApproximatelyEqual(to: 2, relativeTolerance: 0.01)) } }
  11. 9$5"TTFSU&RVBM @@BDDVSBDZ fi MFMJOF "TTFSUTUIBUUXP fl PBUJOHQPJOUWBMVFTBSFFRVBMXJUIJOBTQFDJ fi FEBDDVSBDZ w

    1BSBNFUFST w FYQSFTTJPO w FYQSFTTJPO w BDDVSBDZ 5IJTQBSBNFUFSEFTDSJCFTUIFNBYJNVNEJ ff FSFODF CFUXFFO FYQSFTTJPO BOE FYQSFTTJPO GPSUIFTFWBMVFTUPCF DPOTJEFSFEFRVBM IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOYDUFTUYDUBTTFSUFRVBM @@BDDVSBDZ@ fi MFMJOF GSGX
  12. ࠷ऴతʹ ͜ΕΛ import XCTest final class SwiftTestingSampleTests: XCTestCase { func

    testExample() { let a = 0.1 let b = 0.2 XCTAssertEqual(a, 0.1, accuracy: 0.01) XCTAssertEqual(b, 0.2, accuracy: 0.01) XCTAssertEqual(a + b, 0.3, accuracy: 0.01) XCTAssertEqual(a - b, -0.1, accuracy: 0.01) XCTAssertEqual(b - a, 0.1, accuracy: 0.01) XCTAssertEqual(a * b, 0.02, accuracy: 0.01) XCTAssertEqual(a / b, 0.5, accuracy: 0.01) XCTAssertEqual(b / a, 2, accuracy: 0.01) } }
  13. ࠷ऴతʹ ͜͏ͯ͠ import Testing @Suite struct SwiftTestingSampleTests { @Test func

    example() { let a = 0.1 let b = 0.2 #expect(a == 0.1, accuracy: 0.01) #expect(b == 0.2, accuracy: 0.01) #expect(a + b == 0.3, accuracy: 0.01) #expect(a - b == -0.1, accuracy: 0.01) #expect(b - a == 0.1, accuracy: 0.01) #expect(a * b == 0.02, accuracy: 0.01) #expect(a / b == 0.5, accuracy: 0.01) #expect(b / a == 2, accuracy: 0.01) } }
  14. ࠷ऴతʹ ͜͏͡Ό import Testing @Suite struct SwiftTestingSampleTests { @Test func

    example() { let a = 0.1 let b = 0.2 #expect(abs(a - 0.1) < 0.01) #expect(abs(b - 0.2) < 0.01) #expect(abs(a + b - 0.3) < 0.01) #expect(abs(a - b - -0.1) < 0.01) #expect(abs(b - a - 0.1) < 0.01) #expect(abs(a * b - 0.02) < 0.01) #expect(abs(a / b - 0.5) < 0.01) #expect(abs(b / a - 2) < 0.01) } }