В Python есть множество микросервисных фреймворков, которые значительно упростили бы код, который вы должны написать.
Попробуйте, например, pymacaron ( http://pymacaron.com/ ). Вот пример API-интерфейса helloworld, реализованного с помощью pymacaron: https://github.com/pymacaron/pymacaron-helloworld
Служба pymacaron требует от вас только: (1) написать Swagger спецификация для вашего API (который всегда является хорошей отправной точкой, независимо от того, какой язык вы используете). Ваш файл swagger описывает вызовы get / post / etc вашего API и какие объекты (json dicts) они получают и возвращают, а также какой метод python в вашем коде реализует конечную точку. (2) и реализовать методы ваших конечных точек.
Как только вы это сделаете, вы получите множество вещей бесплатно: вы можете упаковать свой код в докер-контейнер, развернуть его на amazon beanstalk, запустить асинхронные задачи из ваших вызовов API или получить документацию API без дополнительных затрат. Работа.
Если Вы опускаете все постфиксы F (т.е. -12.1
вместо -12.1F
) Вы получите равенство нескольким цифрам больше. Ваши константы (и особенно математические ожидания) являются теперь плаваниями из-за F
. При выполнении этого нарочно затем, объясните.
, Но для остальных я соглашаюсь с другими ответами при сравнении двойных или значений плавающих для равенства, это просто не надежно.
Арифметика с плавающей точкой на компьютерах не является Точной Наукой :).
, Если Вы хотите точную точность к предопределенному количеству Десятичного числа использования десятичных чисел вместо двойного или принимаете незначительный интервал.
http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems
, Например, non-representability 0,1 и 0.01 (в двоичном файле) означает, что результат попытки к квадратным 0.1 ни 0.01, ни представимое число, самое близкое к нему.
Только плавающая точка использования, если Вы хотите интерпретацию машины (двоичный файл) систем счисления. Вы не можете представить 10 центов.
Если Вы хотите точность, используйте Систему. Десятичное число. Если Вы хотите скорость, используйте Систему. Дважды (или Система. Плавание). Числа с плавающей точкой не являются "бесконечной точностью" числа и поэтому утверждение, что равенство должно включать допуск. Пока Ваши числа имеют разумное число значащих цифр, это в порядке.
Видят этот ответ (также мной) для подробного анализа того, как точность влияет на результат Ваших математических операций.
Проверьте ответы на этот вопрос: это безопасный проверить значения с плавающей точкой на равенство 0?
Действительно, просто проверьте на "в рамках допуска..."
плавания и удваиваются, не может точно сохранить все числа. Это - ограничение с системой плавающей точки IEEE. Чтобы иметь верную точность, необходимо пользоваться большим количеством библиотеки высшей математики.
, Если Вам не нужна точность мимо определенного момента, затем возможно, десятичное число будет работать лучше на Вас. Это имеет более высокую точность, чем дважды.
For the similar issue, I end up using the following implementation which seems to success most of my test case (up to 5 digit precision):
public static double roundValue(double rawValue, double valueTick)
{
if (valueTick <= 0.0) return 0.0;
Decimal val = new Decimal(rawValue);
Decimal step = new Decimal(valueTick);
Decimal modulo = Decimal.Round(Decimal.Divide(val,step));
return Decimal.ToDouble(Decimal.Multiply(modulo, step));
}
Я действительно хотел бы, чтобы они не реализовали оператор == для чисел с плавающей запятой и двойных чисел. Почти всегда неправильно спрашивать, равно ли двойное или плавающее значение любому другому значению.
Иногда результат более точен, чем вы ожидаете от строгого: FP IEEE 754. Это потому, что HW использует больше битов для вычисления. См. Спецификация C # и Эта статья
Java имеет ключевые слова java и C ++ имеют компиляторы коммутаторов. Я скучаю по этому варианту в .NET