sprintf(buff, "%.19" NVgf, SvNV(arg)); and sv_setpvf(keysv, "%.19" NVgf, SvNV(arg)); #### sv_setpvf(keysv, "%.19" NVgf, SvNV(arg)); with sv_setpvf(keysv, "%.19g", SvNV(arg));