my $packed_integer = int($float * 1_000_000); my $unpacked_float = $packed_integer / 1_000_000; #### assert(sizeof(int) >= sizeof(float)); float f = ...; int *i_ptr = (int*)&f; int i = *int; #### my $v = 1/3; my $v2 = unpack("F", pack("j", unpack("j", pack("F", $v)))); print ("v = $v\nv = $v2\n"); # v = 0.333333333333333 # v = 0.333333333333333 #### die("float cannot be packed into integer") unless ($int_size >= $float_size);