#include <stdio.h>
#include <float.h>
#include <math.h>
static inline int gdigits(double d, int precision)
{
return precision
- (int) log10(d
) - 1; }
static void test_scanf(const char *s)
{
double x1, x2;
if ((sscanf(s
, "%lf %lf", &x1
, &x2
)) == 2) {
printf("Exponential form: %e, %e\n", x1
, x2
); printf("Digits for default precision (6): %d %d\n", gdigits
(x1
, 6), gdigits
(x2
, 6)); printf("With default precision (6): %g %g\n", x1
, x2
); printf("Digits for precision (7): %d %d\n", gdigits
(x1
, 7), gdigits
(x2
, 7)); printf("With custom precision (7): %#.7g %#.7g\n", x1
, x2
); printf("With even more precision (32): %.32g %.32g\n", x1
, x2
); }
else
{
printf("%s: invalid input.\n", s
); }
}
int main(void)
{
test_scanf("1495.952 934.023");
test_scanf("6369.015 66159.129");
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxmbG9hdC5oPgojaW5jbHVkZSA8bWF0aC5oPgoKc3RhdGljIGlubGluZSBpbnQgZ2RpZ2l0cyhkb3VibGUgZCwgaW50IHByZWNpc2lvbikKewogICAgcmV0dXJuIHByZWNpc2lvbiAtIChpbnQpIGxvZzEwKGQpIC0gMTsKfQoKc3RhdGljIHZvaWQgdGVzdF9zY2FuZihjb25zdCBjaGFyICpzKQp7CiAgICBkb3VibGUgeDEsIHgyOwoKICAgIGlmICgoc3NjYW5mKHMsICIlbGYgJWxmIiwgJngxLCAmeDIpKSA9PSAyKQogICAgewogICAgICAgIHByaW50ZigiSW5wdXQ6ICVzXG4iLCBzKTsKICAgICAgICBwcmludGYoIkV4cG9uZW50aWFsIGZvcm06ICVlLCAlZVxuIiwgeDEsIHgyKTsKICAgICAgICBwcmludGYoIkRpZ2l0cyBmb3IgZGVmYXVsdCBwcmVjaXNpb24gKDYpOiAlZCAlZFxuIiwgZ2RpZ2l0cyh4MSwgNiksIGdkaWdpdHMoeDIsIDYpKTsKICAgICAgICBwcmludGYoIldpdGggZGVmYXVsdCBwcmVjaXNpb24gKDYpOiAlZyAlZ1xuIiwgeDEsIHgyKTsKICAgICAgICBwcmludGYoIkRpZ2l0cyBmb3IgcHJlY2lzaW9uICg3KTogJWQgJWRcbiIsIGdkaWdpdHMoeDEsIDcpLCBnZGlnaXRzKHgyLCA3KSk7CiAgICAgICAgcHJpbnRmKCJXaXRoIGN1c3RvbSBwcmVjaXNpb24gKDcpOiAlIy43ZyAlIy43Z1xuIiwgeDEsIHgyKTsKICAgICAgICBwcmludGYoIldpdGggZXZlbiBtb3JlIHByZWNpc2lvbiAoMzIpOiAlLjMyZyAlLjMyZ1xuIiwgeDEsIHgyKTsKICAgICAgICBwdXRzKCIiKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBwcmludGYoIiVzOiBpbnZhbGlkIGlucHV0LlxuIiwgcyk7CiAgICB9Cn0KIAppbnQgbWFpbih2b2lkKQp7CiAgICB0ZXN0X3NjYW5mKCIxNDk1Ljk1MiA5MzQuMDIzIik7CiAgICB0ZXN0X3NjYW5mKCI2MzY5LjAxNSA2NjE1OS4xMjkiKTsKfQog