즉시 소수점이 결과에 1/2의 힘을 추가로 을 전환해야 발생과 같이
func fractionalBinaryToDecimal(bin: String) -> Double? {
var result = 0.0
var inFractionalPart = false // Set to `true` if the decimal point is encountered
var fractionalValue = 1.0 // Current power of 1/2 when adding the fractional part
for digit in bin.characters { // Swift 4: for digit in bin { ...
switch digit {
case "0":
if inFractionalPart {
fractionalValue /= 2.0
} else {
result = 2 * result
}
case "1":
if inFractionalPart {
fractionalValue /= 2.0
result += fractionalValue
} else {
result = 2 * result + 1
}
case ".":
guard !inFractionalPart else { return nil } // Repeated decimal point
inFractionalPart = true
default:
return nil // Invalid digit
}
}
return result
}
예 :
if let val = fractionalBinaryToDecimal(bin: "101.0101") {
print(val) // 5.3125
}
질문을 다시 쓸 수 있습니까? 현재 게시물에서 정확히 원하는 것을 얻는 것은 어렵습니다. – user28434
예를 들어 "101.01"을 5.25로 변환 하시겠습니까? –
User28434, okay –