TCL GUI tcl_precision - PullRequest
       11

TCL GUI tcl_precision

1 голос
/ 16 сентября 2011

Я использую tclsh8.4.19 и текстовые значения, которые печатаются с использованием tcl_precision 3, имеют до 5 десятичных знаков.т.е. когда я создаю виджет в tk gui, текстовые значения составляют от 5 до десятичных разрядов, и я хочу, чтобы они были только до 3 десятичных знаков.

label $base.main.parameter($i).ParamValue($i,$j)  -text "$myvalue" \
                               -font {times 11 bold} -relief sunken

Теперь, если значение myvalue равно .3456789, то текст печатается.3456789 и значение, которое я хочу
для печати, составляет .345.Итак, я подумал об использовании параметра tcl_precision 3, но безуспешно.

Нужно ли использовать что-то еще?Пожалуйста, объясни.

Ответы [ 2 ]

3 голосов
/ 16 сентября 2011

Справочная документация TCL предупреждает об изменении tcl_precision;это предусмотрено в современной версии только для обратной совместимости.Для достижения того, что вам нужно сделать, команда форматирования была бы гораздо лучшим выбором:

set a 0.123456    
format %.3lf $a

показывает преобразование числа в строку с тремя десятичными знаками.

Абсолютное значение для точностиможет быть заменен на *, в этом случае приоритет берется из следующего аргумента команды форматирования.

set precesion 3
set v 1.2345678
format %.*lf $precesion $v
1.235

Полную информацию об использовании команды форматирования можно найти на его странице справочника, один онлайнверсию можно найти здесь

1 голос
/ 16 сентября 2011

Чтобы округлить значение до определенного количества десятичных разрядов для отображения, используйте format.

set a 0.123654
set rounded [format "%.3f" $a]

Вы также можете указать места округления из переменной:

set a 0.123654
set b 3
set rounded [format "%.*f" $b $a]

Хотя также возможно (если, возможно, менее безопасно, если вы не можете заставить $b быть целым числом) просто создать строку формата с подстановками:

set rounded [format "%.${b}f" $a]
...