簡體   English   中英

GCC部門截斷(四舍五入問題)

[英]GCC division truncates (rounding problem)

在Ubuntu Linux 10.04上使用GCC時,除法后我不需要進行舍入。

我試過了:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void FormatReading(int temp)
{
    double reading = temp / 100;
    printf("%f\n",reading);  /* displays 226.000000, was expecting 226.60 */
}

int main(void)
{
    FormatReading(22660);
    return 0;
}

建議我嘗試:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void FormatReading(int temp)
{
    long reading = temp ;
    reading = reading / 100;
    printf("%3.2ld\n",reading);  /* displays 226 */
}

int main(void)
{
    FormatReading(22660);
    return 0;
}

我也嘗試過:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void FormatReading(int temp)
{
    long reading = temp ;
    double reading2 = reading / 100;
    printf("%3.2f\n",reading2);  /* displays 226.00 */
}

int main(void)
{
    FormatReading(22660);
    return 0;
}

我還以各種方式嘗試使用包含math.h和帶有編譯器標簽-lm的round函數,但沒有找到我想要的東西。

任何幫助,不勝感激。

最好的問候,伯特

double reading = temp / 100.0;
                           ^^

temp / 100是一個整數除法-您將結果分配給double不會改變這一點。

您正在使用整數除法,該除法總是給出整數結果而不是分數,然后將結果分配給雙精度數。 用100.0而不是100除以得到所需的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM