在使用c ++进行编程时,我对XCode有疑问,任何帮助都会受到欢迎:)
#include "TFloat.h"
#include <math.h>
TFloat::TFloat()
{
_valor = 0.0;
set_precision(52);
recortar();
}
TFloat::TFloat(size_t t)
{
_valor = 0.0;
set_precision(t);
recortar();
}
TFloat::TFloat(int i, size_t t)
{
_valor = (double) i;
set_precision(t);
recortar();
}
TFloat::TFloat(float f, size_t t)
{
_valor = (double) f;
set_precision(t);
recortar();
}
TFloat::TFloat(double f, size_t t)
{
_valor = f;
set_precision(t);
recortar();
}
double TFloat::dbl() const
{
return _valor;
}
void TFloat::operator =(const TFloat& f)
{
_valor = f._valor;
_t = f._t;
}
void TFloat::operator =(const double& f)
{
_valor = f;
recortar();
}
bool TFloat::operator ==(const TFloat& f) const
{
return (_valor == f._valor);
}
TFloat TFloat::operator + (const TFloat& f) const
{
double result = _valor + f._valor;
return TFloat(result, _t);
}
TFloat TFloat::operator - (const TFloat& f) const
{
double result = _valor - f._valor;
return TFloat(result, _t);
}
TFloat TFloat::operator * (const TFloat& f) const
{
double result = _valor * f._valor;
return TFloat(result, _t);
}
TFloat TFloat::operator / (const TFloat& f) const
{
double result = _valor / f._valor;
return TFloat(result, _t);
}
TFloat TFloat::exponencial() const
{
double result = exp(_valor);
return TFloat(result, _t);
}
TFloat TFloat::operator+ (const double& f) const
{
return this->operator+(TFloat(f,_t));
}
TFloat TFloat::operator- (const double& f) const
{
return this->operator-(TFloat(f,_t));
}
TFloat TFloat::operator* (const double& f) const
{
return this->operator*(TFloat(f,_t));
}
TFloat TFloat::operator/(const double& f) const
{
return this->operator/(TFloat(f,_t));
}
void TFloat::recortar()
{
bitset<64> * bits;
bits = (bitset<64>*) &_valor;
for(size_t i = 0 ; i < (52 - _t); i++ )
{
(*bits)[i] = 0;
}
}
在此功能中使用“recortar”时出现问题:
TFloat::TFloat(double f, size_t t)
{
_valor = f;
set_precision(t);
recortar();
}
当我通过这样做从main.cpp调用它时:
size_t _precision = precision(51);
TFloat Beta(0.0,_precision);
我认为这是一个记忆问题,但我不知道如何解决它。谢谢!
答案 0 :(得分:1)
首先,您尝试使用此代码实现的目标是什么? 如前所述
bits = (bitset<64>*) &_valor;
无法工作,您可以使用包含0和1的字符串初始化bitset,也可以使用包含位的无符号long来初始化bitset。在任何情况下,使用浮点值进行位操作都没有多大意义 Here很好地解释了不同的演员如何工作以及如何使用和不能使用。