|  | 
|  | 
| вернуться в форум | Fractional part detection I used this code:double x, y; cin >> x >> y;
 x *= 1000; y *= 1000;
 int X = (int)x, Y = (int)y;
 
 But this code doesn't work properly. For example, if x = -1.001, then X will be -1000 (in some cases one unit is lost).
 How to avoid this in C++?
 To solve this problem I had to read whole string and then parse it :)
Re: Fractional part detection Послано Vas  6 янв 2013 00:58My method got AC:cin >> a;
 A = (int)(a*1000.000001);
Re: Fractional part detection Послано Xel  10 янв 2014 18:42This task use some architectural float issues.So we need minimize to use real numbers.
 
 I try many times, but get AC only with manual parsing:
 
 x,y = sys.stdin.readline().strip().split()
 xs,ys = x.split('.'), y.split('.')
 x = int(xs[1]), y = int(ys[1])
 if xs[0][0]=='-': x=-x
 if ys[0][0]=='-': y=-y
 
 
 I use float number only one time - in last line, in sqrt.
Re: Fractional part detection Послано ASK  28 мар 2014 21:54I use (g++11)
 double a; scanf("%lf",&a);
 p[j] = (int(a*1000.000001) + 100000) % 1000;
 
 "a*1000" gives WA
 
 "cin >> a" gives TL45 even with "cin.sync_with_stdio(false)"
 | 
 | 
|