[TC] Скрипты. StringChopRight неправильно режет.
Здравствуйте, господа подписчики.
Объясните, в чём тут дело. Вот часть скрипта:
let sVar="9999.8888"
Let iVar = (StringToInt (stringChopRight (sVar, StringContains (sVar,
"."))))
SayInteger (iVar)
Когда sVar = 9999.8888 (т.е. 4 символа перед и 4 после точки), то
произносится именно так, как задумано, т.е. "9999. Но если я начинаю убирать
символы справа, то получаю неожиданный результат:
9999.888 говорит уже (999"
9999.88 говорит "99"
9999.8 говорит "9"
В чём тут дело? Мне важно, чтобы кол-во символов слева проговаривалось
всегда в полном объёме независимо от того, сколько знаков стоит после точки.
Vande omentaina, Игорь Лялин!
ИЛ> В чём тут дело? Мне важно,
чтобы кол-во символов слева проговаривалось
Вы спешите с изменением типа.
Ваша строка:
Let iVar = (StringToInt (stringChopRight (sVar, StringContains (sVar,
"."))))
по сути не имеет смысла. Вы оборачиваете всё в StringToInt(),
соответственно, пытаетесь чопать (StringChopRight) уже целое число.
Но вы забываете, что StringToInt("9999.8888")===9999.
Решение:
Let iVar = stringChopRight (sVar, StringContains (sVar,
"."))
SayInteger(StringToInt(iVar))