#include <stdio.h>
#include <cmath>
int main()
{
float k = 1/3;
printf("%f", k);
return 0;
} 1/3 - это целочисленное деление.
#include <stdio.h>
#include <cmath>
int main()
{
float k = 1/3.0;
printf("%f", k);
return 0;
}
c:\Temp>cl m.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 19.16.27043 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
m.cpp
Microsoft (R) Incremental Linker Version 14.16.27043.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:m.exe
m.obj
c:\Temp>m
0.333333
c:\Temp>
double хочешь запихнуть в переменную с типом float. Поднимается вопрос: понимаешь ли ты то, что ты пишешь?
float k = 1/3.0f; - тут слева и справа от = будет тип float и с инициализацией все будет в порядке. Собственно, это и будет полноценным решением вопроса.f является встроенным, результатом подстановки которого будет вещественное число с типом float.