Правильный результат для выражения 1*2+2/3-2*3*5+1/2/3 должно быть - 27.1666667, но я только продолжаю получать - 27.1666666. Почему?
Вот мой код для приложения калькулятора, я использую рекурсию.
public String execute(String screen_text) { String[] operand = {}; String res = screen_text; double tmp=0; if (screen_text.Contains('+')) { operand = screen_text.Split('+'); for (int a = 0; a < operand.Length; a++) tmp += double.Parse(execute(operand[a])); res = Convert.ToString(tmp); return res; } else if (screen_text.Contains('-')) { operand = screen_text.Split('-'); tmp = double.Parse(execute(operand[0])); for (int b = 1; b < operand.Length; b++) tmp -= double.Parse(execute(operand[b])); res = Convert.ToString(tmp); return res; } else if (screen_text.Contains('x')) { operand = screen_text.Split('x'); tmp = double.Parse(execute(operand[0])); for (int c = 1; c < operand.Length; c++) tmp *= double.Parse(execute(operand[c])); res = Convert.ToString(tmp); return res; } else if (screen_text.Contains('/')) { operand = screen_text.Split('/'); tmp = double.Parse(execute(operand[0])); for (int d = 1; d < operand.Length; d++) tmp /= double.Parse(execute(operand[d])); res = Convert.ToString(tmp); return res; } else { return res; } }
Что я уже пробовал:
Я пытался округлить десятичные дроби только до 6, используя математику.Раунд (res, 6), но он дает тот же ответ. Я не знаю, что еще делать.
mariaclara
Я имел в виду округление десятичных знаков res только до 7, следовательно, математика.Раунд (res, 7).
Я не вижу никакой опции "редактировать вопрос" на этой странице с помощью моего телефона, это странно
Richard MacCutchan
Улучшить вопрос ссылка выше.