Rust: μ •μˆ˜ λ‚˜λˆ„κΈ°/λ‚˜λ¨Έμ§€ 반올림 λ™μž‘μ„ λ¬Έμ„œν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€.

에 λ§Œλ“  2015λ…„ 07μ›” 07일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: rust-lang/rust

Google을 μ‚¬μš©ν•˜μ—¬ Rustμ—μ„œ μ •μˆ˜ λ‚˜λˆ„κΈ°κ°€ μ–΄λ–»κ²Œ μž‘λ™ν•΄μ•Ό ν•˜λŠ”μ§€μ— λŒ€ν•œ 였래된 인수λ₯Ό 많이 찾을 수 μžˆμ§€λ§Œ μ°Έμ‘°, μ •μˆ˜ μœ ν˜•μ— λŒ€ν•œ API λ¬Έμ„œ λ˜λŠ” Div νŠΉμ„±μ— λŒ€ν•œ API λ¬Έμ„œμ—μ„œ λ‹€μŒκ³Ό 같은 λ‚΄μš©μ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ κ²°μ •λœ 것. (그리고 λ¬Έμ„œλŠ” / , checked_div 및 wrapping_div κ°€ λͺ¨λ‘ λ™μΌν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ§€ μ•Šμ„ 수 μžˆμŒμ„ μ•”μ‹œν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.) 이것은 λΆ„λͺ…νžˆ λ•Œλ•Œλ‘œ λ‹€μŒμ„ μ‚¬μš©ν•˜λŠ” μ •μˆ˜ μœ ν˜• λ¬Έμ„œμ— μ˜ν•΄ 더 ν˜Όλž€μŠ€λŸ½μŠ΅λ‹ˆλ‹€. / λŠ” μ •μˆ˜ λ‚˜λˆ—μ…ˆμ„ λ‚˜νƒ€λ‚΄κ³  λ•Œλ‘œλŠ” μˆ˜ν•™ λ‚˜λˆ—μ…ˆμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. ( wrapping_div λ¬Έμ„œμ—μ„œ floor(self / other) 에 λŒ€ν•œ λ‹€λ₯Έ 합리적인 해석을 생각해 λ‚Ό 수 μ—†μŠ΅λ‹ˆλ‹€.) 이것이 μ–Έμ–΄λ§ˆλ‹€ λ‹€λ₯΄κ³  ν•˜λ‚˜μ΄κΈ° λ•Œλ¬Έμ— 이것이 μ–΄λ”˜κ°€μ— λͺ…ν™•ν•˜κ²Œ λ¬Έμ„œν™”λ˜μ–΄ 있으면 쒋을 κ²ƒμž…λ‹ˆλ‹€. μ •μˆ˜ μ‚°μˆ κ³Όμ˜ μ£Όμš” ν˜Όλ™.

λͺ¨λ“  3 λŒ“κΈ€

http://doc.rust-lang.org/reference.html#behavior -not-considered-unsafe λŠ” 'μ˜€λ²„ν”Œλ‘œ'에 λŒ€ν•΄ μ΄μ•ΌκΈ°ν•˜κ³  λž˜ν•‘μ„ μ–ΈκΈ‰ν•˜μ§€λ§Œ, μš°λ¦¬κ°€ 이것을 더 잘 λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€λŠ” 것은 λ§žμŠ΅λ‹ˆλ‹€.

@steveklabnik

이것은 λž˜ν•‘μ΄ μ•„λ‹ˆλΌ λ°˜μ˜¬λ¦Όμ— κ΄€ν•œ κ²ƒμž…λ‹ˆλ‹€. LLVM의 sdiv λ₯Ό μ‚¬μš©ν•˜μ—¬ 0으둜 λ°˜μ˜¬λ¦Όν•©λ‹ˆλ‹€( srem λŠ” ν”Όμ œμˆ˜μ™€ λ™μΌν•œ λΆ€ν˜Έλ₯Ό 가짐). μš°λ¦¬λŠ” 이것을 λ¬Έμ„œν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€( wrapping_div λŒ€ν•œ λ¬Έμ„œλŠ” ν˜„μž¬ _lies_이며 음의 λ¬΄ν•œλŒ€λ‘œ λ°˜μ˜¬λ¦Όν•œλ‹€κ³  μ£Όμž₯함).

μ •μˆ˜ / μ •μˆ˜κ°€ 항상 μ›ν•˜λŠ” 것은 μ•„λ‹ˆλ©° μš°μ—°νžˆ λ°œμƒν•˜κΈ° λ•Œλ¬Έμ— κ²½κ³ λ₯Ό 남겨야 ν•©λ‹ˆλ‹€. λˆ„κ΅°κ°€ 이 글을 읽고 μžˆλ‹€λ©΄ ν•œ 번 생각해 λ³΄μ‹­μ‹œμ˜€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰