Swift 3에서 부동 소수점이있는 소수를 부동 소수점으로 변환하는 간단한 방법을 찾고 있습니다. 예를 들어,이 코드는 십진수를 아무런 문제없이 이진수로 변환합니다.Swift 3에서 10 진수 (부동 소수점 사용)를 2 진수로 변환하는 방법은 무엇입니까?
func convertToBinary(decimal: Int) -> String {
var n = 0, c = 0, k: [String] = [], fs: String = ""
n = decimal
while n > 0 {
c = n % 2
n = n/2
k.append("\(c)")
}
for i in k.reversed() {
fs += "\(i)"
}
return fs
}
불행하게도, 나는 그것을 떠 소수를 변경하고있어 경우에하면 오류 메시지가 를 보여줍니다
c = n % 2
내가 변화하고있어 경우 변수 " '내부'를 입력 유형 '플로트'의 값을 할당 할 수 없습니다"
는좋아, 그럼 난에 '%'를 변경 :
: 그것을 떠 C는 "사용 truncatingRemainder 대신 '%'는 사용할 수 없습니다"또 다른 오류 메시지가 표시모든 것이 작동했습니다. 불행하게도이 프로그램은 분할 무한 진수 (예) :
0.0
0.0
1.0
0.5
0.25
1.125
1.5625
0.78125
0.390625
0.195312
0.0976562
0.0488281
0.0244141
0.012207
0.00610352
0.00305176
0.00152588
0.000762939
0.00038147
0.000190735
등
바이너리 변환 진 후 :
1.4013e-452.8026e-454.2039e-458.40779e-451.68156e-443.50325e-447.00649e-441.4013e-432.8026e-435.60519e-431.12104e-422.24208e-424.48416e-428.96831e-421.79366e-413.58732e-417.17465e-411.43493e-402.86986e-405.73972e-401.14794e-392.29589e-394.59177e-399.18355e-391.83671e-383.67342e-387.34684e-381.46937e-372.93874e-375
및
은 어쩌면 일종의있다 등 해결 방법은 무엇입니까? 이에 대해
이것은 C와 어떻게 관련이 있습니까? Swift에서 프로그래밍하는 경우 C가 어떻게 관련이 있습니까? –
"(타사 라이브러리 및 Foundation이없는 자체 작성 코드)"...? 표준 라이브러리가 이미 필요한 것을 수행한다면 ... 왜 사용하지 않겠습니까? – Alexander
분수 값을 이진수로 나타내시겠습니까? 위의 알고리즘을 캡처 할 수 없습니다. 나는 당신에게 구글 "바이너리 분수"를 제안 할 것이다. 간단한 알고리즘은 https://stackoverflow.com/a/4987217/1271826을 참조하십시오. 또는 http://floating-point-gui.de/formats/binary/를 참조하십시오. 또는 http://cs.furman.edu/digitaldomain/more/ch6/dec_frac_to_bin.htm을 참조하십시오. 이 작업을 수행 할 때 일부 10 진수 값은 한정된 2 진수 표현으로 표현 될 수 없으므로 특정 자릿수로 끝내기를 원할 수 있습니다. – Rob