Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
daez
Creator
Creator

Integer handling using tmap

Hello everyone;

Im currently trying to transform some data but I need to use LPAD (I think) and cant find a good way :

My value :

459,55

45

41

105,32

104,78

I need it transform to 13 characters with 3 digits, and NO , or .

so it should look like

0000000459550

0000000045000

0000000041000

0000000105320

0000000104780

I want to multiply by 1000 and then LEFTPAD 0 until thirteen, is it the best way to do so ?

Im having trouble findind the good type, if i use Float; since there is a , it doesnt multiply.

What i tried :

row1*1000 but it return value with .0 ( 41 > 41000.0 for example)

.multiply cant work (

method multiply(int) is undefined for integer)

Can someone explain to me which type should i use and how can i manage to LPAD and multiply a decimal value ?

Thanks

Labels (2)
1 Solution

Accepted Solutions
daez
Creator
Creator
Author

Finally found a way :

 

String.format("%013d", Math.round(row1.quantity*1000))

 

 

View solution in original post

4 Replies
manodwhb
Champion II
Champion II

@Bourgin Benoit​ , check the below case will help you.

 

https://community.talend.com/s/feed/0D73p000004kQzOCAU

 

Thanks,

Manohar

daez
Creator
Creator
Author

Hello @Manohar B​ ,

 

Thanks for your help. I see this post but its not helping.

 

I can manage to LPAD my string. But i need 3 digits all the time, and for 105,32 it returns 0000000010532 instead of 0000000105320. I tried this :

 

String.format("%013d", Integer.parseInt(row1.qty))

 

But since my data is with comma, I think it doesnt work.

 

 

java.lang.NumberFormatException: For input string: "0,035"

at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)

   at java.base/java.lang.Integer.parseInt(Integer.java:652)

   at java.base/java.lang.Integer.parseInt(Integer.java:770)

 

 

Reminder : data set is like 0,035 or 142,35 , string value.

 

I need my output 13 char long AND 3 digits, no separtor. So LPAD is not enough.

 

Should be 0000000000035 and 0000000142350 for those previous value.

 

Any help appreciated !

 

 

 

 

daez
Creator
Creator
Author

Still actively looking for a way to deal with it

daez
Creator
Creator
Author

Finally found a way :

 

String.format("%013d", Math.round(row1.quantity*1000))