不同形式的printf

我的数据类型为double,我想以以下形式对double进行printf: 如果double x = 2或x = 2.0将2打印到屏幕上,这意味着如果我得到一个整数,我将打印一个整数。 如果双倍x = 2.3或x = 2.30或其他任何整数,我将2.3打印到屏幕上。 有什么办法可以做到吗?或者我需要使用陈述或类似的东西...

double x=2;
printf("%d",x);
double x=2.3;
printf("%.1f",x);

这仅是示例。 我想根据我得到的值来打印一个整数或双精度型。