Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Comparing decimals in Swift Testing
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
417.72KI
July 29, 2025
Programming
240
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Comparing decimals in Swift Testing
https://love-swift.connpass.com/event/361053/
417.72KI
July 29, 2025
More Decks by 417.72KI
See All by 417.72KI
Reboot a personal app abandoned for 10 years with recent techs
417_72ki
0
120
iTunes・おぼえていますか〜ScriptingBridge今昔物語〜
417_72ki
1
220
The history of entry-point in iOS app Development
417_72ki
0
530
R.swift to Asset Symbols
417_72ki
0
390
Refactor with using `available` and `deprecated`
417_72ki
3
830
CLIツールにSwift Concurrencyを適用させようとしている話
417_72ki
3
510
CI with Danger-Swift
417_72ki
1
280
Graduation from Playground beginner
417_72ki
3
1k
Trap Questions in Java and Obj-C
417_72ki
1
380
Other Decks in Programming
See All in Programming
RTSPクライアントを自作してみた話
simotin13
0
560
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
110
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
280
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
110
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
190
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
260
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
1
660
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
230
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
260
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
160
A2UI という光を覗いてみる
satohjohn
1
130
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
530
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
330
40k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Test your architecture with Archunit
thirion
1
2.3k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
220
The Cost Of JavaScript in 2023
addyosmani
55
10k
GraphQLとの向き合い方2022年版
quramy
50
15k
First, design no harm
axbom
PRO
2
1.2k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
180
Are puppies a ranking factor?
jonoalderson
1
3.5k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
250
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
Transcript
4XJGU5FTUJOHʹ͓͚Δ খͷൺֱ 4XJGUѪձWPM!8FBMUI/BWJ
"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"] }
None
ςετɺॻ͍ͯ·͔͢ʁ ❌
ςετɺॻ͍ͯ·͢ΑͶʁ
খͷςετɺॻ͍ͯ·͔͢ʁ
খͷςετͷྫ ࡶ 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) } }
খͷςετͷྫ ࣮ߦ݁Ռ w খͷςετɺॻ͍ͯ·͔͢ʁ
🤔
খͷςετͷྫ ී௨Βͳ͍ 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) }
খͷςετͷྫ ࣮ߦ݁Ռ
ࡶʹղઆ %PVCMF'MPBUුಈখ w ਐͷখΛਐʹม͢Δ w OͷͰදݱ w
w େ៉ྷͳʹͳΒͳ͍ w ࣮ମదͳॴͰؙΊΒΕͨۙࣅͰܭࢉ͢Δ
ࡶʹղઆ ਐʹมͯ͠ҰఆͷॴͰؙΊΒΕΔ IUUQTUPPMTNCTZTDPNDBMDVMBUPSTJFFFQIQ
ࡶʹղઆ ਐʹมͯ͠ҰఆͷॴͰؙΊΒΕΔ IUUQTUPPMTNCTZTDPNDBMDVMBUPSTJFFFQIQ
ࡶʹղઆ ਐʹมͯ͠ҰఆͷॴͰؙΊΒΕΔ IUUQTUPPMTNCTZTDPNDBMDVMBUPSTJFFFQIQ
ුಈখͷςετ ؙΊޡࠩΛߟ্ྀͨ͠Ͱ࣮͢Δඞཁ͕͋Δ
ରॲ๏ 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) }
ରॲ๏ 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) }
ରॲ๏ 9$5FTUͷ߹
4XJGU5FTUJOHͷ߹ʁ
ͱΓ͋͑ͣมͯ͠ΈΔ HJHJOFUTXJGUUFTUJOHSFWPMVUJPOBSZ
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) } }
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) } }
TXJGUUFTUJOHSFWPMVUJPOBSZͰม "GUFS 🤮
4XJGU5FTUJOHͷ w 4XJGU5FTUJOHʹ9$5"TTFSU&RVBM @@BDDVSBDZ ʹΘΔ"1*͕ແ͍ w 4XJGU5FBNࣗ༻ҙ͢Δؾແ͍༷ w TXJGUOVNFSJDTΛ͑ͱͷ͜ͱ
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) } }
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)) } }
Ͱ͜Ε͚ͩͷͨΊʹ ϥΠϒϥϦՃ͢Δͷݏ͡Όͳ͍ʁ
ඪ४"1*͚ͩͰͳΜͱ͔͍ͨ͠
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
5IJTQBSBNFUFSEFTDSJCFTUIFNBYJNVNEJ ff FSFODF CFUXFFO FYQSFTTJPO BOE FYQSFTTJPO GPSUIFTF WBMVFTUPCFDPOTJEFSFEFRVBM
BDDVSBDZ FYQSFTTJPOͱFYQSFTTJPOΛ ͍͠ͱΈͳͤΔޡࠩͷ࠷େ
FYQSFTTJPOͱFYQSFTTJPOͷ ͕ࠩBDDVSBDZҎԼͳΒ0,
࠷ऴతʹ ͜ΕΛ 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) } }
࠷ऴతʹ ͜͏ͯ͠ 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) } }
࠷ऴతʹ ͜͏͡Ό 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) } }
·ͱΊ w ුಈখͷςετؙΊޡࠩΛߟྀ͠ͳ͍ͱ͍͚ͳ͍ w 9$5FTUͰ͋Ε9$5"TTFSU&RVBM @@BDDVSBDZ Λ͓͏ w 4XJGU5FTUJOHʹରԠ͢Δ"1*͕ແ͍ͷͰ͠Α͏ w
ͳΔ͘ϥΠϒϥϦʹཔΒͳ͍
fi O