Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: kalman - 01 Mayıs 2007, 17:34:20

Başlık: FLOAT
Gönderen: kalman - 01 Mayıs 2007, 17:34:20
Float bir sayıyı örneğin 12.62 den    12.50 ye çevirmek veya   12.63    12.75 e çevirmek istiyorum aradaki farkı hesaplayıp yukarı veya aşağı 0.25 basamaklarla  LCD de yazdırmak için CCS C de Fonksiyon mevcut mu???


herkese Selamlar
Başlık: FLOAT
Gönderen: d_yol - 01 Mayıs 2007, 22:56:44
Öyle fonksyon yok. Kendin hesaplaman lazım.
Belki böyle yapabilirsin (ama denemdim):

#include <math.h>

double x, y, n, t1, t2, t3, t4, t5, p;

x = 12.62;
n = modf(x, &y); // x ---> n = 12; y = 0.62
t1 = fabs(y - 0.0); // 0.62
t2 = fabs(y - 0.25); // 0.37
t3 = fabs(y - 0.5); // 0.12
t4 = fabs(y - 0.75); // 0.13
t5 = fabs(y - 1.0); //  0.38

if (t1 < t2)
{
    y = t1;
    p = 0.0;
}
else
{
    y = t2;
    p = 0.25;
}

if (t3 < y)
{
    y = t3;
    p = 0.5;
}

if (t4 < y)
{
    y = t4;
    p = 0.75;
}

if (t5 < y)
{
    p = 1.0;
}

x = n + p;
Başlık: FLOAT
Gönderen: aykuto - 02 Mayıs 2007, 13:41:01
Şöyle bir kod daha pratik olur sanırım:


float cevir(float s)
{
float c;

  c=s*4.0;
  if(c-floor(c)<.5) c=floor(c); else c=floor(c)+1;
  return(c*.25);
}


Bu kodu CCS ile de denedim.

cevir(12.62) --> 12.50
cevir(12.63) --> 12.75
cevir(12.12) --> 12.00
cevir(12.13) --> 12.25

Umarım işinize yarar.
Başlık: FLOAT
Gönderen: kalman - 03 Mayıs 2007, 00:04:06
@aykuto

Evet tam aradığım buydu

SAĞOLASIN