Is it safe to do a TO_NUMBER(TO_CHAR(:n)) ?

```
var n number
exec :n := 9.9999999999999999999999999999999999e125
select to_number(to_char(:n)) from dual;
ORA-01722: invalid number
```

Why?

SQL Reference

*If a positive NUMBER value is extremely large and cannot be represented in the specified format, then the infinity sign (~) replaces the value*

```
select to_char(:n) from dual;
TO_CHAR(:N)
--------------
~
```

I wrote more about infinity here

“more about infinity” ?

9.9999999999999999999999999999999999e125 has the same distance from infinity as

1 has.

yes, but it is so large that to_char displays it as “infinity”