Вопрос по математическим действиям PM и ZP

VIXA

Client
Регистрация
17.06.2016
Сообщения
54
Благодарностей
8
Баллы
8
Появилась проблема, бьюсь не первый день! Зеннопостер версии 5,9,9,1!
На первый взгляд действие очень простое и по идее с ним проблем быть не должно, но проблема появилась и не знаю как решить!
Сама суть проблемы в том что нам требуется вычислить уравнение вида 0.00056 - 0.00001 = ?
пользовал сниппет где 0.00056 = переменная XXX, 0.00001 - переменная ZZZ
предварительно экшеном по замене заменив точку на запятую использую этот сишарп код
//преобразование значений переменных проекта в целые числа и их передача в переменные сниппета
double a = double.Parse(project.Variables["XXX"].Value);
double b = double.Parse(project.Variables["ZZZ"].Value);
// вычисление суммы и передача результата вычисления в переменную проекта
return a - b;
или этот сишарп код без замены, замена уже внутри) на форуме нашел и переделал под себя
float a = float.Parse(project.Variables["XXX"].Value.Replace(".", ","));
float b = float.Parse(project.Variables["ZZZ"].Value.Replace(".", ","));
project.Variables["REZULTAT"].Value = Convert.ToString(a - b).Replace(",", ".");

Переменная REZULTAT это результат)
Эти 2 кода работают отлично в PM результат равен "0.00055" и работает отлично без нареканий!
Но методом тыка нашел что именно этот код не работает так как нужно в ZP он выдаёт результат просто "55"

Так вот как мне решить это простое уравнение чтобы оно решалось правильно и в ZP любым нормальным способом при том что числа могут меняться например быть 10, 0.04589, 1155.454204?
 

VIXA

Client
Регистрация
17.06.2016
Сообщения
54
Благодарностей
8
Баллы
8

DmitryAk

Client
Регистрация
14.12.2016
Сообщения
860
Благодарностей
819
Баллы
93
чтобы оно решалось правильно и в ZP любым нормальным способом
проверьте региональные настройки для чисел.. есть мнение, что у вас на одной машине где PM используется точка, а где зп - запятая.. ну или наоборот.
 
  • Спасибо
Реакции: VIXA и Dimionix

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 104
Баллы
113
Должно работать с любыми входными данными (напр, 0.00001 или 0,00001), но результат будет с точкой
C#:
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
//или
//System.Globalization.CultureInfo culture = System.Globalization.CultureInfo.InvariantCulture;
double a = double.Parse(project.Variables["XXX"].Value.Replace(",", "."), culture);
double b = double.Parse(project.Variables["ZZZ"].Value.Replace(",", "."), culture);
return Convert.ToString(a - b, culture);
 
  • Спасибо
Реакции: Severip, VIXA и samsonnn

VIXA

Client
Регистрация
17.06.2016
Сообщения
54
Благодарностей
8
Баллы
8
DmitryAk ты был прав на машине с PM стояла как нужно запятая по умолчанию, на серваке была точка! Изменил не помогло, перезагрузил сервант стало работать как надо! Видать когда-то давно менял для какого-то проекта, назад не вернул и тут эта бяка выплыла! Спасибо!
Dimionix твой сниппет работает на Ура! Спасибо!

Вопрос решен!!!)
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)