为什么.1lf可以过,而.1llf不能过呢??求助!!!

P1422 小玉家的电费

Exile_Code @ 2023-05-24 19:26:38

#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
#include <vector>
#include <set>
#include <map>
#include <unordered_map>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cstdlib>
#include <algorithm>
#include <list>
#include <string>
#include <cmath>
#include <bitset>

int main() {

    int n;
    cin >> n;
    if (n <= 150)
        printf("%.1lf", n * 0.4463);
    else if (n >= 151 && n <= 400)
        printf("%.1lf", 150*0.4463+(n-150) * 0.4663);
    else 
        printf("%.1lf", 150*0.4463+250*0.4663+(n-400) * 0.5663);

}

这个代码是可以过的,但为什么printf(%.1llf,....)却会出现全错呢??.1lf和.1llf有什么区别吗?


by Shadow_T @ 2023-05-24 19:50:16

你用的不是long long


by uid_310801 @ 2023-05-24 19:54:20

@Exile_Code 这里默认double类型,没有llf,需要long double 的话请使用%Lf


by Exile_Code @ 2023-05-24 20:22:29

对啊!明白了,谢谢指点!


|