Да, вы можете добавлять методы расширения в structs. В соответствии с определением метода расширения вы можете легко достичь этого. Ниже приведен пример метода расширения в int
namespace ExtensionMethods {public static class IntExtensions {public static bool IsGreaterEqualThan (это значение int i, int) {return i & gt; = value; }}}
Если вы хотите усечь значение до двух знаков после запятой, вы можете умножить его на 100, усечь на целое, а затем разделить на 100, например:
c = a / b;
c = floor(100 * c) / 100;
cout<<"Result: "<<fixed<<setprecision(2)<<c<<endl;
Вы можете использовать trunc
для усечения до определенного количества цифр:
c = a / b;
// truncate past two decimals:
c = trunc(c * 100) / 100;
cout<<"Result: "<<fixed<<setprecision(2)<<c<<endl;
для общей функции:
int trunc(double val, int digits)
{
double pow10 = pow(10,digits);
return trunc(val * pow10) / pow10;
}
, затем используйте
cout << "Result: " << fixed << setprecision(2) << trunc(c,2) << endl;
double
до int
без использования метода trunc
.
– RusI
22 February 2018 в 12:35
<cmath>
(см. демонстрацию, я добавил для нее#include
). – dasblinkenlight 4 November 2013 в 01:03std::trunc
был добавлен в C ++ 11, а VS 2012 - не C ++ 11. Вам нужно заменить его наfloor
(отредактировано и изменено демо). – dasblinkenlight 4 November 2013 в 01:07