Чтобы увеличить / уменьшить значение с плавающей запятой на минимально возможную величину, используйте nextafter
в направлении +/- infinity()
.
Если вы просто используете next_after(x,std::numeric_limits::max())
, результат будет неправильным, если x
бесконечен.
#include <iostream>
#include <limits>
#include <cmath>
template<typename T>
T next_above(const T& v){
return std::nextafter(1.0,std::numeric_limits<T>::infinity()) ;
}
template<typename T>
T next_below(const T& v){
return std::nextafter(1.0,-std::numeric_limits<T>::infinity()) ;
}
int main(){
std::cout << next_below(1.0) - 1.0<< std::endl; // gives eps
std::cout << next_above(1.0) - 1.0<< std::endl; // gives ~ -eps/2
// Note:
std::cout << std::nextafter(std::numeric_limits<double>::infinity(),
std::numeric_limits<double>::infinity()) << std::endl; // gives inf
std::cout << std::nextafter(std::numeric_limits<double>::infinity(),
std::numeric_limits<double>::max()) << std::endl; // gives 1.79769e+308
}
Это происходит часто, когда вы добавляете ресурс в другой язык, скажем, у вас есть два языка, один из которых - fr
(французский), а другой - по умолчанию en
. Когда вы поместите ресурс изображения в локаль fr и запустите приложение с локалью по умолчанию, вы увидите этот сбой.
Попробуйте очистить и перестроить свой проект.
Если это не сработает, используйте этот код для установки фона.
linearLayout.setBackground(ContextCompat.getDrawable(this, R.drawable.img1))
Кстати, в следующий раз вы должны опубликовать код напрямую, а не передавать ссылку.