Форум OlegON > Программы и оборудование для автоматизации торговли > Кассовые программы > УКМ-4

Как в lua умножить дробное число на целое число : УКМ-4

29.03.2024 17:44


29.05.2014 14:41
OlegON
 
ну и поменяй точку на запятую, пример с gsub выше...
29.05.2014 14:46
Tiger
 
Цитата:
OlegON ну и поменяй точку на запятую, пример с gsub выше...
В том то и дело что меняются почему-то все символы (в том числе и цифры) на запятые
29.05.2014 14:47
OlegON
 
Запусти отдельно этот скрипт и рассказывай, где как и что запускаешь, если не получается.
29.05.2014 14:52
vdm
 
Да заверни ты все в tonumber и посмотри что получится.
На кассе на локали можно забить, там не зоопарк.

Код:
commission = tostring(tonumber(property.value) - tonumber(property.value) * 0.04);
29.05.2014 14:53
Tiger
 
Цитата:
OlegON Запусти отдельно этот скрипт и рассказывай, где как и что запускаешь, если не получается.
Полностью закинул твой пример в свой цикл

Цитата:
for i = 0, __item.properties:size() - 1 do
local property = __item.properties:at(i);
if (ukm.binary(property.flags) *
ukm.binary(ukm.item_property.flgprint)):get() ~= 0 then
local property_name = property.code;
if property.name ~= nil then
property_name = property.name:get();
end
text = text .. ukm.adjustment(" " .. property_name, property.value .. " ", width, ".") .. "\n";
if property_name == 'Сумма' then
val = "String";
val = tostring(7.5);
val = string.gsub(val,".",",");

end
if property_name == 'Номер телефона' then
text = text .. ukm.adjustment("Сумма с комиссией (4%)",val .. " ", width, ".") .. "\n";
end
end
end
В переменной val получаю вместо 7,5 три точки
29.05.2014 14:56
Tiger
 
Цитата:
vdm Да заверни ты все в tonumber и посмотри что получится.
На кассе на локали можно забить, там не зоопарк.

Код:
commission = tostring(tonumber(property.value) - tonumber(property.value) * 0.04);
С целым числом например 50 всё без ошибок, ввел на кассе 15.20 ошибка
Цитата:
ReceiptAppendPayment: [string "receipt.lua"]:160: attempt to perform arithmetic on a nil value
29.05.2014 15:08
vdm
 
Покажи в каком виде property.value возвращается.

Код:
commission = property.value;
29.05.2014 15:23
Tiger
 
Цитата:
vdm Покажи в каком виде property.value возвращается.

Код:
commission = property.value;
commission = property.value; возвращается значение 15.20

commission = type(property.value); возвращает string
29.05.2014 15:29
Tiger
 
Цитата:
Tiger В том то и дело что меняются почему-то все символы (в том числе и цифры) на запятые
Eсли property.value = 15.20, функцией gsub string.gsub(property.value,"1",","), то получаю результат ,5.20. Почему когда меняю string.gsub(property.value,".",","), получаю ,,,,, - пять запятых?
29.05.2014 15:44
student
 
Цитата:
OlegON Так у него с локалью проблемы, как он на 100 умножит?
у меня не на чем протестировать - луа нету, но в винде в аксесе умножение проходит над строкой в зависимости от локали - если локаль точка и на входе в строке точка все рассчитается - аналогично как и с запятой

правда если локаль точка а строка идет с запятой или наоборот, то тогда уже вопрос к ф-ции которая так возвращает строку в которой разделитель числа отличается от локали:)

самому стало интересно :) решил погуглить


там есть

function userdata.numberformat(amount)
-- replace decimal point with comma (= German format)
return string.gsub(string.format("\%.2f", amount), "%.", ",")
end
Часовой пояс GMT +3, время: 17:44.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.