C0BRa
C0BRa

Reputation: 55

How to format a number string in TCL

Hi i have a number string which out puts as a 4 digit number ie. 2850 i'd like to make that number display as 2.8 please. Ive tried various %.1f etc here's what I have so far

set number 2850
puts [format "%01.1f" $number]

which outputs incorrectly as 2.0 could you please point me in the right direction.

Thankyou to Schelte Bron for his reply is it possible to combine the format and expression into one line of code please ?

set number 2850
set number1 [expr {double($number) / 1000}]
set number2 [format "%01.1f" $number1]
puts "$number2

so instead we would have something like

set number 2850
set number1 [expr {double($size) / 1000} -format "%01.1f $number]
puts $number1

Thanks in advance

Upvotes: 1

Views: 2403

Answers (2)

TrojanName
TrojanName

Reputation: 5385

Assuming you mean to divide 2850 by 1000, it's not clear if you really want to round up to 2.9, or you want to round down to 2.8. Using format will round it up to 2.9 e.g.

set number [expr {2850 / 1000.0}]
puts [format "%.1f" $number]

Using floor will round it down to 2.8 e.g.

set number [expr {2850 / 100.0}]
puts [expr {floor($number) /10.0} ]

Upvotes: 1

Donal Fellows
Donal Fellows

Reputation: 137797

You can do it in one line of code, but the responsibilities of format and expr remain what they are:

set number2 [format "%01.1f" [expr {$number / 1000.0}]]

Upvotes: 0

Related Questions