Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Number format: what is the difference between the num and num# functions?

I cannot understand the difference between the num and num# functions.

The documentation says:

The num function formats the expression numerically according to the string given as format-code. Decimal separator and thousands separator can be set as third and fourth parameters. If the parameters 2-4 are omitted, the number format set in the operating system is used.

and

The num# function evaluates the expression numerically according to the string given as format-code. Decimal separator and thousands separator can be set as third and fourth parameters. If the parameters 2-4 are omitted, the default number format set by script variables or in the operating system is used.

Could somebody explain the difference in a clearer way?

4 Replies
nagaiank
Specialist III
Specialist III

Number: 1234.56

Number representation string: 1,234.56

format-code: #,###,##

Number = Num#(Number representation string, format-code);

Number representation string = Num(Number, format-code);

Not applicable
Author

Thanks for your answer, it is clearer now. However I am still struggling on my original problem: I want to get a number formatted with a dot ('.') as decimal separator and no thousand separator, while keeping all non-zero digits in the decimal part, without any dependencies on the current system formatting.

I tried (X being the number I want to format):

     num(X, '#.#', '.', '')

But it does not work as I want: it rounds X to display only its first decimal digit. I can add some '#' after the decimal in my format but in this case a value of "0.5" will be display as "0.5000000".

My goal is to be able to parse a long string containing both text and number values without having to worry about the locale system settings (for an extension object). Do you know how I can achieve that?

nagaiank
Specialist III
Specialist III

Did you try Num(X, '#####.#') ?

If you want to limit the number of decimals, you may use round() function.

Not applicable
Author

Yes I tried but this is not what I am looking for. I want the number to have as many digits as necessary to prevent precision loss but do not want trailing zeroes if they are not needed.

If I use num(X, '####.#') then I get only one digit after the decimal separator, and the number is rounded if there are more digits needed.

How can I have 3 digits for "4.839" and only one for "5.6"? It seems that I am stuck with either "4.8" and "5.6" OR "4.839" and "5.600"....