Добрый день,
возникла следующая проблема:
Нужно округлить число с плавающей точкой.
Например, у меня есть
0.10000000005
я хочу сделать 0.10
у меня есть 0.2500000009
я хочу 0.25
Как это сделать в C#?
Пробовал так:
int value = 5;
float val = (float)value;
val =val/100; //val = 0.0500000007
float valR = (float)Math.Round(val,1); //=0.100000001
valR = (float)Math.Round(val,2); //=0.0500000007
valR = (float)Math.Round(val,3);//=0.0500000007
?
Здравствуйте, Alexei_z_, Вы писали:
A__>Добрый день,
A__>возникла следующая проблема:
A__>Нужно округлить число с плавающей точкой.
A__>Например, у меня есть
A__>0.10000000005
A__>я хочу сделать 0.10
A__>у меня есть 0.2500000009
A__>я хочу 0.25
A__>Как это сделать в C#?
A__>Пробовал так:
A__>A__>int value = 5;
A__>float val = (float)value;
A__>val =val/100; //val = 0.0500000007
A__>float valR = (float)Math.Round(val,1); //=0.100000001
A__>valR = (float)Math.Round(val,2); //=0.0500000007
A__>valR = (float)Math.Round(val,3);//=0.0500000007
A__>
A__>?
Тебе для расчетов или для вывода на экран (принтер) ?
Если для расчетов, то всё правильно (у меня кстати, округляются до тех знаков, что указаны, т.е.
valR = (float)Math.Round(val,2); //=0.05
А если тебе надо вывести на печать :
string S = valR.ToString("0.00");
Всё заканчивается плохо. Если что-то закончилось хорошо — значит оно еще не закончилось.
Здравствуйте, Unforgiver, Вы писали:
U>Здравствуйте, Alexei_z_, Вы писали:
A__>>Добрый день,
A__>>возникла следующая проблема:
A__>>Нужно округлить число с плавающей точкой.
A__>>Например, у меня есть
A__>>0.10000000005
A__>>я хочу сделать 0.10
A__>>у меня есть 0.2500000009
A__>>я хочу 0.25
A__>>Как это сделать в C#?
A__>>Пробовал так:
A__>>A__>>int value = 5;
A__>>float val = (float)value;
A__>>val =val/100; //val = 0.0500000007
A__>>float valR = (float)Math.Round(val,1); //=0.100000001
A__>>valR = (float)Math.Round(val,2); //=0.0500000007
A__>>valR = (float)Math.Round(val,3);//=0.0500000007
A__>>
A__>>?
U>Тебе для расчетов или для вывода на экран (принтер) ?
U>Если для расчетов, то всё правильно (у меня кстати, округляются до тех знаков, что указаны, т.е.
U>U>valR = (float)Math.Round(val,2); //=0.05
U>
U>А если тебе надо вывести на печать :
U>U>string S = valR.ToString("0.00");
U>
Да, в том то и дело — на одной машине правильно — на второй — нет.
Мне для расчетов.
A__>A__>valR = (float)Math.Round(val,2); //=0.0500000007
A__>
Округляешь и тут же приводишь снова к float, теряя точность.
Используй для повышения точности double или (особенно для денежных расчетов) decimal.
Здравствуйте, Alexei_z_, Вы писали:
[...]
ребят, я конечно дико извиняюсь, но темы читают все ...ну вобщем, какбы сказать, делаете вот так [...]