誰かがこの動作を説明できますか? 私は、浮動小数点数のマシンレベルの表現をよく知っています。これは、printf とその形式に関連しているようです。どちらの数値も浮動小数点表記で正確に表されます (チェック: 64 を掛けると整数になります)。
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
double x1=108.765625;
printf("%34.30f\n", x1);
printf("%9.5f\n", x1);
printf("%34.30f\n", x1*64);
double x2=108.046875;
printf("%34.30lf\n", x2);
printf("%9.5f\n", x2);
printf("%34.30f\n", x2*64);
}
出力:
> 108.765625000000000000000000000000
> 108.76562
> 6961.000000000000000000000000000000
> 108.046875000000000000000000000000
> 108.04688
> 6915.000000000000000000000000000000
最初の数値は切り捨てられ、2 番目の数値は切り上げられることに注意してください。