C语言double和long double的输出

2024-11-20 18:27:34
推荐回答(1个)
回答1:

基本上所有支持类型转换的语言,在高精度向低精度转换时会直接截取高位,所以低位会丢失

另外你的第二个printf里边的输出格式控制符是%f(正确的应该是%lf),而变量是long double,在截掉低位之后发生数据丢失,所以会产生第一个结果.
你把long去掉当然是正确的结果,

至于在mac上和其他电脑的区别,只是机器的问题,但是值并没有改变