C# Сложение чисел. 15.10+27.40

Radugniy

Client
Регистрация
10.10.2013
Сообщения
50
Благодарностей
7
Баллы
8
Всем привет!
Подскажите плз код, с помощью которого можно сложить дробные числа, например 15.10+27.40
Складываемые числа - денежный формат.

Заранее, большое спасибо!
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
в js кубике так и записать
{-Variable.var1-} + {-Variable.var2-}
 
  • Спасибо
Реакции: AntonObukhov

APXOHT

Client
Регистрация
27.12.2013
Сообщения
879
Благодарностей
189
Баллы
43
У меня это делается не в С# а в жаве
Я убираю точку и потом делю на 100
 

APXOHT

Client
Регистрация
27.12.2013
Сообщения
879
Благодарностей
189
Баллы
43

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
как такая постая арифметическая операция может быть неточной? Я у себя не увидел неправильного результата.
 

Radugniy

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

Radugniy

Client
Регистрация
10.10.2013
Сообщения
50
Благодарностей
7
Баллы
8
У меня это делается не в С# а в жаве
Я убираю точку и потом делю на 100
Этот вариант наверное самый результативный будет, но придется добавить еще два кубика для удаления точки (при взятии начальной цифры и конечной).
Один кубик бы(( а то проект итак огромный, пытаюсь облегчить его, изначально вообще привязка к таблице с формулой в экселе была. На слабой рабочей лошадке вообще едет медленно(
 

APXOHT

Client
Регистрация
27.12.2013
Сообщения
879
Благодарностей
189
Баллы
43

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 040
Баллы
113
({-Variable.a-}* 100 + {-Variable.b-}* 100)/100
 
  • Спасибо
Реакции: Radugniy

Radugniy

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

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 560
Благодарностей
8 732
Баллы
113
даже майкрософт-калькулятор из винды дает правильный ответ: 62,45
:ca:
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
тогда корректней будет использовать
(25.40+37.05).toFixed(2);
 
  • Спасибо
Реакции: AlexI7

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 040
Баллы
113
тогда корректней будет использовать
(25.40+37.05).toFixed(2);
так будет округлять значение если больше двух цифр после запятой
(25.40+37.765).toFixed(2);
можно так)
parseFloat((25.40+37.765).toFixed(10))
 
  • Спасибо
Реакции: Radugniy

Radugniy

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

Radugniy

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

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 040
Баллы
113
parseFloat((25.40+37.765).toFixed(10)) вот твоё решение если после запятой больше двух чисел, первый мой тоже не правильно выдаст
 
  • Спасибо
Реакции: fri-lancer и AlexI7

Radugniy

Client
Регистрация
10.10.2013
Сообщения
50
Благодарностей
7
Баллы
8
parseFloat((25.40+37.765).toFixed(10)) вот твоё решение если после запятой больше двух чисел, первый мой тоже не правильно выдаст
Первый вариант потестил - вроде все норм работает. Если вдруг и глюк какой случится со второй переменной, т.е. например вместо 27.40 в переменную попадет число 27.40919, то при сложении с 15.10 он сократит результат до 42.51.

А во втором варианте выдаст 42.50919. Он уже не подходит.

Если подытожить, вероятность глюка с заданными переменными равна практически нулю, поэтому и погрешность исключается. Оба варианта в моем случае будут работать абсолютно одинаково) Ну это на мой не профессиональный взгляд))

Большое всем спасибо!
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 040
Баллы
113
Код:
parseFloat(25.40+15.10).toFixed(2)    //правильно
parseFloat((25.40+15.10).toFixed(3))  //правильно и не правильно
parseFloat((25.40+15.19).toFixed(3))  //правильно
parseFloat((25.40+15.109).toFixed(2)) //не правильно, отрежит тысячную
parseFloat((25.40+15.109).toFixed(3)) //правильно

(25.40+15.10).toFixed(2)  //правильно
(25.40+15.10).toFixed(3)  //не правильно, добавит лишний ноль
(25.40+15.19).toFixed(3)  //не правильно, добавит лишний ноль
(25.40+15.109).toFixed(2) //не правильно отрежит тысячную
(25.40+15.109).toFixed(3) //правильно
 
Последнее редактирование:

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