2
십진수의 문자열 표현을 Num.num
으로 변환하는 함수를 찾고 있습니다. Num.num_of_string
함수가 있지만, 슬프게도 유효한 정수에서만 작동합니다.OCaml에서 문자열을 Num.num으로 변환하는 방법은 무엇입니까?
그런 기능 중 하나를 다시 구현하기 전에 묻습니다.
십진수의 문자열 표현을 Num.num
으로 변환하는 함수를 찾고 있습니다. Num.num_of_string
함수가 있지만, 슬프게도 유효한 정수에서만 작동합니다.OCaml에서 문자열을 Num.num으로 변환하는 방법은 무엇입니까?
그런 기능 중 하나를 다시 구현하기 전에 묻습니다.
당신 스스로해야 할 것 같습니다. 나는 한 번 해냈어. 내가 한 일은 여기에있다.
let num_of_string =
let open Num in
let code_0 = Char.code '0' in
let num10 = Int 10 in
fun s ->
try num_of_string s
with Failure _ ->
let r = ref (Int 0) in
let pos_dot = ref (-1) in
String.iteri (fun i c ->
if c = '.' then pos_dot := String.length s - i
else
r := add_num (mult_num num10 !r) (num_of_int (Char.code c - code_0))
) s;
assert (!pos_dot <> -1);
div_num !r (power_num num10 (num_of_int !pos_dot))