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
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
1.5k
Building an Out-of-Order CPU
latte72
0
700
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
3
1.1k
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
220
AIエージェント時代のコードレビューを設計する
nogu66
6
2.5k
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
54
36k
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
130
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
560
MIZARU@SPAJAM2026 第二回予選
1901drama
0
110
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.9k
スマート反転とウェブアクセシビリティ
camiha
0
110
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
680
Featured
See All Featured
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
510
Believing is Seeing
oripsolob
1
210
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
260
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
200
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
190
Tell your own story through comics
letsgokoyo
1
1.1k
Un-Boring Meetings
codingconduct
0
410
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Statistics for Hackers
jakevdp
799
230k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Designing for humans not robots
tammielis
254
26k
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