我完全是新的编码的东西,我开始在C,所以我的问题如何得到一个/两个数字后面的点(.)的价格,我有点困惑,而使用%-30 lf。
void displayItems(){
system("cls");
printf("Display Items!\n\n");
printf("%-10s %-20s %-20s %-20s %s\n", "ID", "Name Item", "Price", "Quantity", "Date");
printf ("---------------------------------------------------------------------------------------------\n");
fp = fopen("items.txt", "rb");
while(fread(&p, sizeof(p), 1, fp)== 1){
printf("%-10d %-20s %-20lf %-20d %s\n", p.id, p.namaItem, p.price, p.quantity, p.date);
}
fclose(fp);
}
*/ The Output
ID Name Item Price Quantity Date
---------------------------------------------------------------------------------------------
1 aa 20.000000 1 17/03/2023
*/
我已经尝试使用%0.2和其他,但我有点卡住和困惑,谢谢!
1条答案
按热度按时间gzszwxb41#
那%-20.2f呢?- Gerhardh
首先,通常对货币使用定点表示和算术更好-例如,整数美分而不是浮点数美元。
但是如果你使用浮点数,那么要打印的小数位数可以通过转换说明符中的精度字段来控制。例如,%-20.2f中的.2。- John Bollinger
除了scanf之外,printf中的double不需要%lf。你可以使用%f。对于可变参数函数,float参数会自动提升为double。- Gerhardh
非常感谢,你们解决了我的问题,谢谢你们的建议和纠正!