簡體   English   中英

如何在xinu中打印長雙數?

[英]how to print long double number in xinu?

Function sqrtl在這里不起作用,對於所有給定數字, long double打印fprintf也不起作用:

#include <conf.h>
#include <kernel.h>
#include <math.h>
#include <float.h>

long double sqrtn; 
unsigned long int n;    

void xmain() {
    unsigned long int n;   
    printf("Enter unsigned long integer:\n"); 
    scanf("%lu", &n); 
    sqrtn = sqrtl(long double)n);
    printf("\nsqrtn=%Lf\n", sqrtn); 
} /* main */

我從https://xinu.cs.purdue.edu/files/Xinu-code-Galileo.tar.gz下載了 x86 的 Xinu 源代碼。

查看printf的實現( lib/printf.c lib/doprnt.c ),據我所知,它不支持長度修飾符。 這意味着,例如,這個:

long int n = 42;
printf("%ld\n", n);

行不通。 我建議在你的系統上嘗試。

這不是符合標准的 C 實現(並且可能不是有意的)。

它似乎支持大多數標准轉換說明符( "%d""%u""%x""%f"等)。

如果你想打印一個long double值,我認為你能做的最好的是將它轉換為double並使用"%f" (這可能會丟失范圍和/或精度)或編寫你自己的代碼來轉換一個long double值到一個字符串。 (或者在不同的系統上運行你的代碼)。

免責聲明:這個我沒試過,我只查看了源代碼,並且只針對x86版本的系統。

我擔心 long double 不會打印。 我寫了一個小測試,發現我的 MAC 想要%Lf%Le 似乎必須使用大寫 L。

暫無
暫無

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

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