[英]how to print long double number in xinu?
Function sqrtl
在這里不起作用,對於所有給定數字, long double
打印f
的printf
也不起作用:
#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.