по всей видимости возникают ошибки, раз пришлось обратиться за помощью на форум.в чём неверность?
как угоднопо всей видимости возникают ошибки, раз пришлось обратиться за помощью на форум.
0.12345678как угодно
Есть округление в большую сторону и в меньшую. Экселем пользовался?0.12345678
0.123457
это разные цифры, нужна точность...
Можно такую комбинациюC#:double d = 0.12345678; int decimals = 5; return Math.Floor(d*Math.Pow(10, decimals))/Math.Pow(10, decimals);
спасибо! но скругление не прокатит в моём случае.Есть округление в большую сторону и в меньшую. Экселем пользовался?
https://aakinshin.net/ru/posts/cheatsheet-rounding/ Вот банально, можно почитать.
1) Странно, что не прокатит, если округлять в меньшую сторону - получается аналог "обрезания" которое ты хочешь.спасибо! но скругление не прокатит в моём случае.
float pull = 0.123456789101112
string mem = Convert.ToString(pull);
mem = mem.Substring(0, mem.Length - x); // где x - сколько с конца удалить.
/* или можно вот так
int index = mem.Length - 1; //количество символов
mem = mem.Remove(x, index - x); // где x - начало откуда нужно "отрезать"
*/
//потом возвращаешь во float
pull = ConvertToSingle(mem); // Вроде так....
Вот этот метод подойдетMath.Floor округляет вниз по направлению к отрицательной бесконечности.
Попробуй конечно стринг.... но я хз сработает ли.
Я вообще новичок и не в темеC#:float pull = 0.123456789101112 string mem = Convert.ToString(pull); mem = mem.Substring(0, mem.Length - x); // где x - сколько с конца удалить. /* или можно вот так int index = mem.Length - 1; //количество символов mem = mem.Remove(x, index - x); // где x - начало откуда нужно "отрезать" */ //потом возвращаешь во float pull = ConvertToSingle(mem); // Вроде так....
Отвечаю сразу на два твоих поста.фишка в том, что после точки может быть 6 цифр, а может быть и 15...
удаление с конца не подойдёт.
в любом случае благодарю за попытку помочь.
скругление не подходит не в какую сторону, буду тогда кубиками обрезать число.
А вообще оно тебе нафиг не надо первое преобразование, если у тебя переменная в проекте висит. Т.к. она типа стринг - из последнего моего поста формула подойдёт.фишка в том, что после точки может быть 6 цифр, а может быть и 15...
удаление с конца не подойдёт.
в любом случае благодарю за попытку помочь.
скругление не подходит не в какую сторону, буду тогда кубиками обрезать число.
ну у тебя же твоём коде, который тебе не нравился, как-то переменная передавалась. Передай такжетак ошибка возникает.ProjectMaker for ZennoPoster v5.29.5.0 by ZennoLab.com (88 kb) закачан 23 сентября 2019 г. Joxi
сделан при помощи Joxi.netjoxi.ru
тут можно поподробнее:ну у тебя же твоём коде, который тебе не нравился, как-то переменная передавалась. Передай также
double d = Double.Parse(project.Variables["test"].Value) ;
int decimals = 5;
return Math.Floor(d*Math.Pow(10, decimals))/Math.Pow(10, decimals);
Всё прекрасно работает. Иди разбирайся с кодом.тут можно поподробнее:
вот этот скруглитель работает.
как сделать чтобы он стал обрезателем?
return System.Math.Round(Convert.ToDecimal(project.Variables["test"].Value), 8 ) ;
огромное человеческое спасибо! работает!!!C#:double d = Double.Parse(project.Variables["test"].Value) ; int decimals = 5; return Math.Floor(d*Math.Pow(10, decimals))/Math.Pow(10, decimals);
Я код чуть выше выложил. Зачем дублировать?)))Переводишь число в строку, субстрингом обрезаешь нужное количество символов, конвертишь обратно в число.
Чукча писатель) Импульсивный пост.Я код чуть выше выложил. Зачем дублировать?)))
а если перед точкой другое число цифр? а если после? А если число отрицательное?Я код чуть выше выложил. Зачем дублировать?)))
утёрся) я изначально предположил, что у него числа только положительные и диапазон от 0 до 1 . Можно конечно ещё поиск позиции точки встроить, но это уже сложнее чем операнд предложенный выше.а если перед точкой другое число цифр? а если после? А если число отрицательное?
Без проверки на ошибки, достаточно простоМожно конечно ещё поиск позиции точки встроить, но это уже сложнее чем операнд предложенный выше.
double chislo = 0.123456789012;
string stroka = chislo.ToString();
var data = stroka.Split('.');
string drobnaya = data[1];
drobnaya = drobnaya.Substring(0, 5); // сколько оставить.
string result = data[0] + "." + drobnaya;
Угу. В моем понимании "Сложнее" это просто количество строк в конструкции)) К чему мы и пришли) Отличный выход, я примерно так себе всё и представлял.Без проверки на ошибки, достаточно просто
C#:double chislo = 0.123456789012; string stroka = chislo.ToString(); var data = stroka.Split('.'); string drobnaya = data[1]; drobnaya = drobnaya.Substring(0, 5); // сколько оставить. string result = data[0] + "." + drobnaya;