Я собираюсь вычислить двойной тип с точностью до десятичного знака. конечно, я надеюсь, что у результата есть та же десятичная точность. Однако, это не работает, только 6 десятичных знаков возможны в VS2008. Есть ли какая-то причина или идея?
double dMag = 10;
double dPixelSize = 4.4;
double PixelWidth = 1024/2;
double PixelHeight = 768/2;
double umtomm = 1000;
double origin_PosX = 813.227696;
double origin_PosY = 676.195748;
double PosX = (origin_PosX - PixelWidth) * dPixelSize / dMag / umtomm;
double PosY = (origin_PosY - PixelHeight ) * dPixelSize / dMag / umtomm;
Если я проверю PosX и PosY, то результаты будут «0.132540, 0.128566» соответственно. Я ожидаю, что результаты «0.13254018624000002, 0.12856612912» соответственно.
Спасибо
Из того, что я понимаю, вы путаете несколько вещей …
Точность double
это больше, чем просто 6 знаков после запятой. Я настоятельно рекомендую прочитать эта статья в википедии который объясняет, как основной double
Тип данных хранит ваш номер и объясняет его точность.
Точность, которая печатные по умолчанию ограничено 6 знаками после запятой. Чтобы это исправить, вам нужно научиться пользоваться строка формата.
В ваших комментариях вы упомянули использование
tmp1.Format("%f,%f\r\n", PosX, PosY); file.Write(tmp1,lstrlen(tmp1));
распечатать строки.
Попробуйте изменить эту строку на
tmp1.Format("%.10f,%.10f\r\n", PosX, PosY); file.Write(tmp1,lstrlen(tmp1));
и вы увидите, что он будет печатать 10 цифр после десятичной точки.
Других решений пока нет …