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
417.72KI
July 29, 2025
Programming
260
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
130
iTunes・おぼえていますか〜ScriptingBridge今昔物語〜
417_72ki
1
240
The history of entry-point in iOS app Development
417_72ki
0
540
R.swift to Asset Symbols
417_72ki
0
400
Refactor with using `available` and `deprecated`
417_72ki
3
840
CLIツールにSwift Concurrencyを適用させようとしている話
417_72ki
3
520
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
5分で問診!Composer セキュリティ健康診断
codmoninc
0
1.1k
Go 1.27 における memory allocation の高速化
andpad
0
270
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
350
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
1
140
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
490
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.9k
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.9k
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
330
Built Our Own Background Agent at LayerX
layerx
PRO
10
5.8k
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
440
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
340
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
440
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
1k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
350
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
370
Paper Plane
katiecoart
PRO
2
53k
Designing for humans not robots
tammielis
254
26k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Building Adaptive Systems
keathley
44
3.2k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
680
ラッコキーワード サービス紹介資料
rakko
1
4.4M
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
480
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
280
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