浮動少数点型の-0.0000を環境によらずに"-0.0000"と表示するスマートな方法を教えてほしい

以下は自分で考えたコード

float d = 0;
*(int*)(&d) |= 0x80000000;

if((*(int*)(&d)) & 0x80000000)
{
printf("-");
}

*(int*)(&d) &= ~(0x80000000);

printf("%.4f\n", d);