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
250
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
230
The history of entry-point in iOS app Development
417_72ki
0
540
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
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
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
190
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
7.2k
Webフレームワークの ベンチマークについて
yusukebe
0
190
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
270
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.6k
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
130
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.9k
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
810
Performance Engineering for Everyone
elenatanasoiu
0
250
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
780
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
340
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
640
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
360
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
320
Unsuck your backbone
ammeep
672
58k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
240
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
170
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
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