-2

我应该将值削减为 int 和 float 部分。像 '21' - 想要将 '2' 和 '1' 作为整数。

float fp; // float part
float fp1; // new "int-style" float part
float ip; // int part

fp = modff(21.0/10, &ip);
ip = ip*10; // there i will get the '2'. Its works fine
fp1 = fp*10; // there i will get a null (0.09999999 by debugger, 
but should to be 0.99+)... 

但是对于任何其他值,例如“22”,它都会起作用。也很好。怎么了?:(

好像这个功能不喜欢这个单位

====================================

是的,很容易修复!:) 我使用了“modf”而不是“modff”。它具有“双”数据类型,因此现在可以正常工作)

感谢您的回答

4

1 回答 1

1

在浮点数中,当您执行 21.0 / 10.0 时,您通常不会得到 2.1。由于浮点不准确,您得到的是 2.099 或类似的值。

float fp; // float part
float fp1; // new "int-style" float part
float ip; // int part

float value = 21.0;
float part = 10.0;
fp = modf(value / part, &ip);
fp1 = value - (ip * part); //gives you 21 - (2 * 10) = 1

//ip = 2
//fp1 = 1
于 2013-05-22T15:13:16.853 回答