На *отклоняют, у Вас, вероятно, есть команда "whereis", которая ищет Ваш $PATH, ища двоичный файл с именем. Если 0$ не содержат имя полного пути, работание whereis $scriptname и сохранение результата в переменную должны сказать Вам, где сценарий расположен.
Используйте средство форматирования% g:
printf( "%g", 123.4000 );
печатает
123.4
Завершающие нули удаляются, но, к сожалению, также удаляется конечная десятичная точка, если дробная часть равна нулю. Я не знаю, есть ли на самом деле какой-либо способ сделать то, что вы хотите, напрямую с помощью printf () - я думаю, что что-то вроде этого, вероятно, ваш лучший выбор:
#include <stdio.h>
#include <math.h>
void print( FILE * f, double d ) {
if ( d - floor(d) == 0.0 ) {
fprintf( f, "%g.", d );
}
else {
fprintf( f, "%g", d );
}
}
int main() {
print( stdout, 12.0 );
print( stdout, 12.300 );
}
Не знаю, насколько это взломано, но:
float f = 124.000;
if (f == (int) f) {
printf("%.1f\n", f); /* .1 can be changed */
} else {
printf("%g\n", f);
}
Возвращает 124,0
.
float f = 124.123000;
if (f == (int) f) {
printf("%.1f\n", f); /* .1 can be changed */
} else {
printf("%g\n", f);
}
Возвращает 124,123
.
Print to a (large enough) buffer. Print the buffer ... and if the there's no '.'
in the buffer print a dot.
char buf[100];
sprintf(buf, "%g", val);
printf("%s", buf);
if (strchr(buf, '.') == NULL) putchar('.');
edit
The Standard specifies the #
flag:
# The result is converted to an ``alternative form''. [...] For a, A, e, E, f, F, g, and G conversions, the result of converting a floating-point number always contains a decimal-point character, even if no digits follow it. [...] For g and G conversions, trailing zeros are not removed from the result. [...]
... but you get the trailing zeros :(
Используйте% g -
Выведите двойное число в нормальном или экспоненциальном представлении, в зависимости от того, что больше подходит для его величины. 'g' использует буквы нижнего регистра, 'G' использует буквы верхнего регистра. Этот тип немного отличается от записи с фиксированной точкой тем, что незначащие нули справа от десятичной точки не включаются. Кроме того, десятичная точка не включается в целые числа.