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
Tweet

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) } }