Eu estava preso no problema acima.
Ao tentar resolver isso, escrevi a seguinte listagem.
Espero que mantenha dois dígitos após a vírgula.
#include "simulation.hpp"
#include <cstdio>
typedef double real;
double truncate_(double f)
{
return std::trunc(f * 100.0);
}
int main()
{
//Simulation sim;
//sim.run();
LennardJones lj(Constants::EPSILON, Constants::SIGMA, Constants::KB);
Vec3 diatance(4.0, 4.0, 4.0);
real attractive = lj.getPotentialAttractive(diatance);
real repulsive = lj.getPotentialRepulsive(diatance);
std::cout << attractive << std::endl;
std::cout << repulsive << std::endl;
real attractive2 = truncate_(attractive);
real repulsive2 = truncate_(repulsive);
std::cout << attractive2 << std::endl;
std::cout << repulsive2 << std::endl;
getchar(); // Wait for a keypress
}
Saída:
-4.84292e-06
6.82474e-08
-0
0
-4.84292e-06
e6.82474e-08
ainda são zero dentro de dois dígitos após a vírgula decimal, então, como esperado, você obterá zero ao truncá-los.Se você escreveu
... então você imprimiria
0.00
em vez de0
. Ele mantém dois dígitos após a vírgula decimal e ambos os dígitos são zero.