forked from mirrors/org-mode
lisp/ob-C.el: replace %f with %s to prevent unneeded rounding
* lisp/ob-C.el (org-babel-C-val-to-C-type): Floats should be printed as string literals to prevent rounding introduced by %f format. * testing/lisp/test-ob-C.el (ob-C/float-var): Test that floats are not rounded when passed as an org :var.
This commit is contained in:
parent
2c77551a68
commit
d55a112149
|
@ -339,7 +339,7 @@ FORMAT can be either a format string or a function which is called with VAL."
|
||||||
(type
|
(type
|
||||||
(pcase basetype
|
(pcase basetype
|
||||||
(`integerp '("int" "%d"))
|
(`integerp '("int" "%d"))
|
||||||
(`floatp '("double" "%f"))
|
(`floatp '("double" "%s")) ;; %f rounds, use %s to print the float literally
|
||||||
(`stringp
|
(`stringp
|
||||||
(list
|
(list
|
||||||
(if (eq org-babel-c-variant 'd) "string" "const char*")
|
(if (eq org-babel-c-variant 'd) "string" "const char*")
|
||||||
|
|
|
@ -95,6 +95,17 @@
|
||||||
(org-babel-next-src-block 10)
|
(org-babel-next-src-block 10)
|
||||||
(should (= 42 (org-babel-execute-src-block))))))
|
(should (= 42 (org-babel-execute-src-block))))))
|
||||||
|
|
||||||
|
(ert-deftest ob-C/float-var ()
|
||||||
|
"Test that floats are passed without unnecessary rounding."
|
||||||
|
(if (executable-find org-babel-C++-compiler)
|
||||||
|
(org-test-with-temp-text
|
||||||
|
"#+source: float_var
|
||||||
|
#+begin_src cpp :var x=1.123456789012345678 :includes \"<iostream>\" :results silent
|
||||||
|
double y = 1.123456789012345678;
|
||||||
|
std::cout << (x == y);
|
||||||
|
#+end_src"
|
||||||
|
(should (= 1 (org-babel-execute-src-block))))))
|
||||||
|
|
||||||
(ert-deftest ob-C/table ()
|
(ert-deftest ob-C/table ()
|
||||||
"Test of a table output"
|
"Test of a table output"
|
||||||
(if (executable-find org-babel-C++-compiler)
|
(if (executable-find org-babel-C++-compiler)
|
||||||
|
|
Loading…
Reference in New Issue