Форум » [x]Harbour » SET DECIMALS TO » Ответить

SET DECIMALS TO

Andrey: Использую МиниГуи, Харбор такой: Version: 3.2.0dev (r1709261254) Built on: Sep 26 2017 Где сейчас задаётся разрядность вычислений, т.е. кол-во знаков после запятой ? Раньше нигде разрядность не задавал, использовал стандартную, 2 знака после запятой. А сейчас в новой версии идёт 4 знака после запятой. Прога кучу ошибок выдает при проверках.... Т.е. при STR( nSum ) выдаёт число с 4-мя знаками после нуля. Раньше выдавал 2 знака после нуля. Пробовал задавать в начале программы (как для Клипера): [pre2]SET DECIMALS TO 2 SET FIXED ON[/pre2] результат всё равно отрицательный, т.е. выдает все равно 4 знака после запятой ! Как задать расчёты со стандартными двумя нулями после запятой ?

Ответов - 9

Pasha: Как бы все есть в описании команд set decimals и set fixed в русском ng от 5.01. Ни добавить, ни прибавить. Все, как там описано, точно так же работает в харборе. Дай самодостаточный пример, что у тебя не так.

Andrey: Pasha пишет: Дай самодостаточный пример, что у тебя не так. Вот навскидку: [pre2]PROCEDURE Main LOCAL nI, nK SET EPOCH TO ( Year(Date()) - 50 ) SET TOOLTIP BALLOON ON SET LANGUAGE TO RUSSIAN SET CODEPAGE TO RUSSIAN SET Date TO GERMAN RDDSETDEFAULT('DBFCDX') SET DELETED ON SET NAVIGATION EXTENDED SET MULTIPLE OFF WARNING SET DATE FORMAT "DD.MM.YY" SET DELETED ON SET GLOBAL HOTKEYS ON SET DECIMALS TO 2 SET FIXED ON nI := 123456.89 nK := 1.8901 ? MiniGuiVersion() ? nI, STR(nI) ? nK, STR(nK) ? nI*nK, STR(nI*nK) .....[/pre2] Результат: [pre2]Harbour MiniGUI Extended Edition 17.09 (Update 1) 123456.89 123456.89 1.8901 1.8901 233345.867789 233345.867789 [/pre2]

Dima: Andrey [pre2] SET FIXED ON SET DECIMALS TO 2 nI := 123456.89 nK := 1.8901 ? nI, STR(nI) ? nK, STR(nK) ? nI*nK, STR(nI*nK) [/pre2] Clipper 123456.89 123456.89 1.89 1.89 233345.87 233345.87 Harbour 3.2.0dev (Rev. 18899) / Harbour 3.2.0dev (r1502260836) 123456.89 123456.89 1.89 1.8901 233345.87 233345.867789


Andrey: Спасибо Dima !

Pasha: Налицо несовместимость функции str() в clipper (и xHarbour) с одной стороны, и в Harbour с другой. В клиппере set fixed on влияет на работу str, а в harbour не влияет. Причем так было от сотворения мира с момента возникновения харбора. Надо отметить, что к разрядности вычислений это не имеет никакого отношения. Разрядность определяется правилами вычислений чисел с плавающей точкой, т.е. double. А это просто разрядность для преобразования этих чисел в строку. Т.е само число содержит знаки после запятой, но при преобразовании в строку они отбрасываются.

Dima: Pasha пишет: Налицо несовместимость функции str() я к примеру "голый" Str ни когда не использовал , поэтому и на такие косяки не нарывался.

Pasha: А я никогда не задавал set fixed on, и тоже не замечал такого фичи бага

Dima: Pasha пишет: А я никогда не задавал set fixed on +1

Oskar_AAA: +100



полная версия страницы