aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2015-07-31 10:12:37 -0700
committerPaul Eggert2015-07-31 10:13:38 -0700
commiteb0f65b4fbbea60100b53cb40a1d7138d47ad0d2 (patch)
treef2debb3a46b3e18217d8cd1736fc7d8add90e3bd
parent0f23e95b29a7a0a07bba0e9bc796cd7b7bc7232a (diff)
downloademacs-eb0f65b4fbbea60100b53cb40a1d7138d47ad0d2.tar.gz
emacs-eb0f65b4fbbea60100b53cb40a1d7138d47ad0d2.zip
Don't overflow if computing approximate percentage
* lisp/align.el (align-region): * lisp/cedet/semantic.el (semantic-repeat-parse-whole-stream): * lisp/cedet/semantic/wisent.el (wisent-parse-region): * lisp/cus-edit.el (custom-buffer-create-internal): * lisp/emacs-lisp/checkdoc.el (checkdoc-interactive-ispell-loop) (checkdoc-message-interactive-ispell-loop, checkdoc-next-error) (checkdoc-next-message-error): * lisp/emacs-lisp/eieio-opt.el (eieio-display-method-list): * lisp/epa.el (epa-progress-callback-function): * lisp/erc/erc-dcc.el (erc-dcc-do-LIST-command): * lisp/ffap.el (ffap-menu-rescan): * lisp/gnus/nnbabyl.el (nnbabyl-retrieve-headers): * lisp/gnus/nndiary.el (nndiary-retrieve-headers): * lisp/gnus/nneething.el (nneething-retrieve-headers): * lisp/gnus/nnmbox.el (nnmbox-retrieve-headers): * lisp/gnus/nnmh.el (nnmh-retrieve-headers): * lisp/gnus/nnml.el (nnml-retrieve-headers): * lisp/gnus/nnspool.el (nnspool-retrieve-headers): * lisp/gnus/nntp.el (nntp-retrieve-headers) (nntp-retrieve-articles): * lisp/imenu.el (imenu--relative-position): * lisp/international/ja-dic-cnv.el (skkdic-collect-okuri-nasi) (skkdic-convert-okuri-nasi): * lisp/net/ange-ftp.el (ange-ftp-process-handle-hash): * lisp/nxml/rng-valid.el (rng-compute-mode-line-string): * lisp/org/org-list.el (org-update-checkbox-count): * lisp/org/org.el (org-table-map-tables) (org-update-parent-todo-statistics): * lisp/play/decipher.el (decipher-insert-frequency-counts) (decipher-analyze-buffer): * lisp/profiler.el (profiler-format-percent): * lisp/progmodes/cc-cmds.el (c-progress-update): * lisp/progmodes/cpp.el (cpp-highlight-buffer): * lisp/progmodes/idlwave.el (idlwave-convert-xml-system-routine-info) (idlwave-list-load-path-shadows): * lisp/progmodes/opascal.el (opascal-step-progress): * lisp/progmodes/vhdl-mode.el (vhdl-update-progress-info) (vhdl-scan-directory-contents): * lisp/textmodes/bibtex.el (bibtex-progress-message): * lisp/textmodes/flyspell.el (flyspell-small-region) (flyspell-external-point-words): * lisp/textmodes/table.el (table-recognize): Prefer (floor (* 100.0 NUMERATOR) DENOMINATOR) when calculating progress-report percentages and the like. This avoids problems if (* 100 NUMERATOR) would overflow. * lisp/gnus/gnus-registry.el (gnus-registry-import-eld): * lisp/gnus/registry.el (registry-reindex): Use (* 100.0 ...) rather than (* 100 ...) to avoid int overflow issues. * lisp/descr-text.el (describe-char): * lisp/org/org-colview.el (org-nofm-to-completion): * lisp/ps-print.el (ps-plot): * lisp/simple.el (what-cursor-position): Prefer (round (* 100.0 NUMERATOR) DENOMINATOR) to a more-complicated and less-accurate approximation.
-rw-r--r--lisp/align.el8
-rw-r--r--lisp/cedet/semantic.el4
-rw-r--r--lisp/cedet/semantic/wisent.el6
-rw-r--r--lisp/cus-edit.el2
-rw-r--r--lisp/descr-text.el4
-rw-r--r--lisp/emacs-lisp/checkdoc.el8
-rw-r--r--lisp/emacs-lisp/eieio-opt.el4
-rw-r--r--lisp/epa.el2
-rw-r--r--lisp/erc/erc-dcc.el11
-rw-r--r--lisp/ffap.el2
-rw-r--r--lisp/gnus/gnus-registry.el2
-rw-r--r--lisp/gnus/nnbabyl.el2
-rw-r--r--lisp/gnus/nndiary.el2
-rw-r--r--lisp/gnus/nneething.el2
-rw-r--r--lisp/gnus/nnmbox.el2
-rw-r--r--lisp/gnus/nnmh.el2
-rw-r--r--lisp/gnus/nnml.el2
-rw-r--r--lisp/gnus/nnspool.el2
-rw-r--r--lisp/gnus/nntp.el4
-rw-r--r--lisp/gnus/registry.el2
-rw-r--r--lisp/imenu.el5
-rw-r--r--lisp/international/ja-dic-cnv.el4
-rw-r--r--lisp/net/ange-ftp.el2
-rw-r--r--lisp/nxml/rng-valid.el16
-rw-r--r--lisp/org/org-colview.el2
-rw-r--r--lisp/org/org-list.el4
-rw-r--r--lisp/org/org.el6
-rw-r--r--lisp/play/decipher.el4
-rw-r--r--lisp/profiler.el2
-rw-r--r--lisp/progmodes/cc-cmds.el4
-rw-r--r--lisp/progmodes/cpp.el3
-rw-r--r--lisp/progmodes/idlwave.el4
-rw-r--r--lisp/progmodes/opascal.el2
-rw-r--r--lisp/progmodes/vhdl-mode.el14
-rw-r--r--lisp/ps-print.el5
-rw-r--r--lisp/simple.el5
-rw-r--r--lisp/textmodes/bibtex.el2
-rw-r--r--lisp/textmodes/flyspell.el4
-rw-r--r--lisp/textmodes/table.el4
39 files changed, 74 insertions, 91 deletions
diff --git a/lisp/align.el b/lisp/align.el
index 82a55b0feac..ad5be2ae74d 100644
--- a/lisp/align.el
+++ b/lisp/align.el
@@ -1437,12 +1437,12 @@ aligner would have dealt with are."
1437 (message 1437 (message
1438 "Aligning `%s' (rule %d of %d) %d%%..." 1438 "Aligning `%s' (rule %d of %d) %d%%..."
1439 (symbol-name symbol) rule-index rule-count 1439 (symbol-name symbol) rule-index rule-count
1440 (/ (* (- (point) real-beg) 100) 1440 (floor (* (- (point) real-beg) 100.0)
1441 (- end-mark real-beg))) 1441 (- end-mark real-beg)))
1442 (message 1442 (message
1443 "Aligning %d%%..." 1443 "Aligning %d%%..."
1444 (/ (* (- (point) real-beg) 100) 1444 (floor (* (- (point) real-beg) 100.0)
1445 (- end-mark real-beg)))))) 1445 (- end-mark real-beg))))))
1446 1446
1447 ;; if the search ended us on the beginning of 1447 ;; if the search ended us on the beginning of
1448 ;; the next line, move back to the end of the 1448 ;; the next line, move back to the end of the
diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index 81a97884554..290cd907beb 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -769,8 +769,8 @@ This function returns semantic tags without overlays."
769 (eq semantic-working-type 'percent) 769 (eq semantic-working-type 'percent)
770 (progress-reporter-update 770 (progress-reporter-update
771 semantic--progress-reporter 771 semantic--progress-reporter
772 (/ (* 100 (semantic-lex-token-start (car stream))) 772 (floor (* 100.0 (semantic-lex-token-start (car stream)))
773 (point-max)))))) 773 (point-max))))))
774 result)) 774 result))
775 775
776;;; Parsing Warnings: 776;;; Parsing Warnings:
diff --git a/lisp/cedet/semantic/wisent.el b/lisp/cedet/semantic/wisent.el
index dfa533c7b26..761bc6812da 100644
--- a/lisp/cedet/semantic/wisent.el
+++ b/lisp/cedet/semantic/wisent.el
@@ -322,9 +322,9 @@ the standard function `semantic-parse-region'."
322 semantic--progress-reporter 322 semantic--progress-reporter
323 (progress-reporter-update 323 (progress-reporter-update
324 semantic--progress-reporter 324 semantic--progress-reporter
325 (/ (* 100 (semantic-lex-token-start 325 (floor (* 100.0 (semantic-lex-token-start
326 (car wisent-lex-istream))) 326 (car wisent-lex-istream)))
327 (point-max)))))) 327 (point-max))))))
328 ;; Return parse tree 328 ;; Return parse tree
329 (nreverse ptree))) 329 (nreverse ptree)))
330 330
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 1d9a9d6d426..a8d1c97e37a 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -1709,7 +1709,7 @@ Operate on all settings in this buffer:\n"))
1709 (mapcar (lambda (entry) 1709 (mapcar (lambda (entry)
1710 (prog2 1710 (prog2
1711 (message "Creating customization items ...%2d%%" 1711 (message "Creating customization items ...%2d%%"
1712 (/ (* 100.0 count) length)) 1712 (floor (* 100.0 count) length))
1713 (widget-create (nth 1 entry) 1713 (widget-create (nth 1 entry)
1714 :tag (custom-unlispify-tag-name 1714 :tag (custom-unlispify-tag-name
1715 (nth 0 entry)) 1715 (nth 0 entry))
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index a0b9ddfe2c9..71233d406e1 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -542,9 +542,7 @@ relevant to POS."
542 ,(let* ((beg (point-min)) 542 ,(let* ((beg (point-min))
543 (end (point-max)) 543 (end (point-max))
544 (total (buffer-size)) 544 (total (buffer-size))
545 (percent (if (> total 50000) ; Avoid overflow multiplying by 100 545 (percent (round (* 100.0 (1- pos)) (max total 1)))
546 (/ (+ (/ total 200) (1- pos)) (max (/ total 100) 1))
547 (/ (+ (/ total 2) (* 100 (1- pos))) (max total 1))))
548 (hscroll (if (= (window-hscroll) 0) 546 (hscroll (if (= (window-hscroll) 0)
549 "" 547 ""
550 (format ", Hscroll: %d" (window-hscroll)))) 548 (format ", Hscroll: %d" (window-hscroll))))
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index 0b451ef6b2a..c22aff4cbca 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -747,7 +747,7 @@ buffer, otherwise searching starts at START-HERE."
747 ;; Loop over docstrings. 747 ;; Loop over docstrings.
748 (while (checkdoc-next-docstring) 748 (while (checkdoc-next-docstring)
749 (message "Searching for doc string spell error...%d%%" 749 (message "Searching for doc string spell error...%d%%"
750 (/ (* 100 (point)) (point-max))) 750 (floor (* 100.0 (point)) (point-max)))
751 (if (looking-at "\"") 751 (if (looking-at "\"")
752 (checkdoc-ispell-docstring-engine 752 (checkdoc-ispell-docstring-engine
753 (save-excursion (forward-sexp 1) (point-marker))))) 753 (save-excursion (forward-sexp 1) (point-marker)))))
@@ -767,7 +767,7 @@ buffer, otherwise searching starts at START-HERE."
767 ;; Loop over message strings. 767 ;; Loop over message strings.
768 (while (checkdoc-message-text-next-string (point-max)) 768 (while (checkdoc-message-text-next-string (point-max))
769 (message "Searching for message string spell error...%d%%" 769 (message "Searching for message string spell error...%d%%"
770 (/ (* 100 (point)) (point-max))) 770 (floor (* 100.0 (point)) (point-max)))
771 (if (looking-at "\"") 771 (if (looking-at "\"")
772 (checkdoc-ispell-docstring-engine 772 (checkdoc-ispell-docstring-engine
773 (save-excursion (forward-sexp 1) (point-marker))))) 773 (save-excursion (forward-sexp 1) (point-marker)))))
@@ -791,7 +791,7 @@ perform the fix."
791 (condition-case nil 791 (condition-case nil
792 (while (and (not msg) (checkdoc-next-docstring)) 792 (while (and (not msg) (checkdoc-next-docstring))
793 (message "Searching for doc string error...%d%%" 793 (message "Searching for doc string error...%d%%"
794 (/ (* 100 (point)) (point-max))) 794 (floor (* 100.0 (point)) (point-max)))
795 (if (setq msg (checkdoc-this-string-valid)) 795 (if (setq msg (checkdoc-this-string-valid))
796 (setq msg (cons msg (point))))) 796 (setq msg (cons msg (point)))))
797 ;; Quit.. restore position, Other errors, leave alone 797 ;; Quit.. restore position, Other errors, leave alone
@@ -813,7 +813,7 @@ assumes that the cursor is already positioned to perform the fix."
813 (setq type 813 (setq type
814 (checkdoc-message-text-next-string (point-max)))) 814 (checkdoc-message-text-next-string (point-max))))
815 (message "Searching for message string error...%d%%" 815 (message "Searching for message string error...%d%%"
816 (/ (* 100 (point)) (point-max))) 816 (floor (* 100.0 (point)) (point-max)))
817 (if (setq msg (checkdoc-message-text-engine type)) 817 (if (setq msg (checkdoc-message-text-engine type))
818 (setq msg (cons msg (point))))) 818 (setq msg (cons msg (point)))))
819 ;; Quit.. restore position, Other errors, leave alone 819 ;; Quit.. restore position, Other errors, leave alone
diff --git a/lisp/emacs-lisp/eieio-opt.el b/lisp/emacs-lisp/eieio-opt.el
index 9ecc59434e1..0b003360ed5 100644
--- a/lisp/emacs-lisp/eieio-opt.el
+++ b/lisp/emacs-lisp/eieio-opt.el
@@ -243,13 +243,13 @@ are not abstract."
243 (princ "Methods Primary Only: ") 243 (princ "Methods Primary Only: ")
244 (prin1 primaryonly) 244 (prin1 primaryonly)
245 (princ "\t") 245 (princ "\t")
246 (princ (format "%d" (* (/ (float primaryonly) (float methidx)) 100))) 246 (princ (format "%d" (floor (* 100.0 primaryonly) methidx)))
247 (princ "% of total methods") 247 (princ "% of total methods")
248 (terpri) 248 (terpri)
249 (princ "Only One Primary Impl: ") 249 (princ "Only One Primary Impl: ")
250 (prin1 oneprimary) 250 (prin1 oneprimary)
251 (princ "\t") 251 (princ "\t")
252 (princ (format "%d" (* (/ (float oneprimary) (float primaryonly)) 100))) 252 (princ (format "%d" (floor (* 100.0 oneprimary) primaryonly)))
253 (princ "% of total primary methods") 253 (princ "% of total primary methods")
254 (terpri) 254 (terpri)
255 )) 255 ))
diff --git a/lisp/epa.el b/lisp/epa.el
index d3fec73ecf4..f6d60459777 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -658,7 +658,7 @@ If SECRET is non-nil, list secret keys instead of public keys."
658 (if (= current total) 658 (if (= current total)
659 (message "%s...done" prompt) 659 (message "%s...done" prompt)
660 (message "%s...%d%%" prompt 660 (message "%s...%d%%" prompt
661 (floor (* (/ current (float total)) 100)))) 661 (floor (* 100.0 current) total)))
662 (message "%s..." prompt)))) 662 (message "%s..." prompt))))
663 663
664(defun epa-read-file-name (input) 664(defun epa-read-file-name (input)
diff --git a/lisp/erc/erc-dcc.el b/lisp/erc/erc-dcc.el
index 182f1e05921..d4d005d8345 100644
--- a/lisp/erc/erc-dcc.el
+++ b/lisp/erc/erc-dcc.el
@@ -594,14 +594,9 @@ It lists the current state of `erc-dcc-list' in an easy to read manner."
594 (get-buffer (plist-get elt :file)) 594 (get-buffer (plist-get elt :file))
595 (+ (buffer-size) 0.0 595 (+ (buffer-size) 0.0
596 erc-dcc-byte-count)))) 596 erc-dcc-byte-count))))
597 (concat " (" 597 (format " (%d%%)"
598 (if (= byte-count 0) 598 (floor (* 100.0 byte-count)
599 "0" 599 (plist-get elt :size))))))
600 (number-to-string
601 (truncate
602 (* 100
603 (/ byte-count (plist-get elt :size))))))
604 "%)"))))
605 ?f (or (and (plist-member elt :file) (plist-get elt :file)) ""))) 600 ?f (or (and (plist-member elt :file) (plist-get elt :file)) "")))
606 (erc-display-message 601 (erc-display-message
607 nil 'notice 'active 602 nil 'notice 'active
diff --git a/lisp/ffap.el b/lisp/ffap.el
index 81cba07d4c3..c0ab1af80f5 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -1568,7 +1568,7 @@ Applies `ffap-menu-text-plist' text properties at all matches."
1568 (add-text-properties (car ffap-string-at-point-region) (point) 1568 (add-text-properties (car ffap-string-at-point-region) (point)
1569 ffap-menu-text-plist) 1569 ffap-menu-text-plist)
1570 (message "Scanning...%2d%% <%s>" 1570 (message "Scanning...%2d%% <%s>"
1571 (/ (* 100 (- (point) (point-min))) range) item))) 1571 (floor (* 100.0 (- (point) (point-min))) range) item)))
1572 (or mod (restore-buffer-modified-p nil)))) 1572 (or mod (restore-buffer-modified-p nil))))
1573 (message "Scanning...done") 1573 (message "Scanning...done")
1574 ;; Remove duplicates. 1574 ;; Remove duplicates.
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index 0cb596012c7..50443973a8d 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -1100,7 +1100,7 @@ only the last one's marks are returned."
1100 (when (and (< 0 expected) 1100 (when (and (< 0 expected)
1101 (= 0 (mod count 100))) 1101 (= 0 (mod count 100)))
1102 (message "importing: %d of %d (%.2f%%)" 1102 (message "importing: %d of %d (%.2f%%)"
1103 count expected (/ (* 100 count) expected))) 1103 count expected (/ (* 100.0 count) expected)))
1104 (setq entry (car-safe old) 1104 (setq entry (car-safe old)
1105 old (cdr-safe old)) 1105 old (cdr-safe old))
1106 (let* ((id (car-safe entry)) 1106 (let* ((id (car-safe entry))
diff --git a/lisp/gnus/nnbabyl.el b/lisp/gnus/nnbabyl.el
index d060c2a80dd..ae417a0ffe8 100644
--- a/lisp/gnus/nnbabyl.el
+++ b/lisp/gnus/nnbabyl.el
@@ -105,7 +105,7 @@
105 (> number nnmail-large-newsgroup) 105 (> number nnmail-large-newsgroup)
106 (zerop (% (incf count) 20)) 106 (zerop (% (incf count) 20))
107 (nnheader-message 5 "nnbabyl: Receiving headers... %d%%" 107 (nnheader-message 5 "nnbabyl: Receiving headers... %d%%"
108 (/ (* count 100) number)))) 108 (floor (* count 100.0) number))))
109 109
110 (and (numberp nnmail-large-newsgroup) 110 (and (numberp nnmail-large-newsgroup)
111 (> number nnmail-large-newsgroup) 111 (> number nnmail-large-newsgroup)
diff --git a/lisp/gnus/nndiary.el b/lisp/gnus/nndiary.el
index 027d8888705..31344382029 100644
--- a/lisp/gnus/nndiary.el
+++ b/lisp/gnus/nndiary.el
@@ -423,7 +423,7 @@ all. This may very well take some time.")
423 (> number nnmail-large-newsgroup) 423 (> number nnmail-large-newsgroup)
424 (zerop (% count 20)) 424 (zerop (% count 20))
425 (nnheader-message 6 "nndiary: Receiving headers... %d%%" 425 (nnheader-message 6 "nndiary: Receiving headers... %d%%"
426 (/ (* count 100) number)))) 426 (floor (* count 100.0) number))))
427 427
428 (and (numberp nnmail-large-newsgroup) 428 (and (numberp nnmail-large-newsgroup)
429 (> number nnmail-large-newsgroup) 429 (> number nnmail-large-newsgroup)
diff --git a/lisp/gnus/nneething.el b/lisp/gnus/nneething.el
index 183e3967632..0d9044fb712 100644
--- a/lisp/gnus/nneething.el
+++ b/lisp/gnus/nneething.el
@@ -106,7 +106,7 @@ included.")
106 (and large 106 (and large
107 (zerop (% count 20)) 107 (zerop (% count 20))
108 (nnheader-message 5 "nneething: Receiving headers... %d%%" 108 (nnheader-message 5 "nneething: Receiving headers... %d%%"
109 (/ (* count 100) number)))) 109 (floor (* count 100.0) number))))
110 110
111 (when large 111 (when large
112 (nnheader-message 5 "nneething: Receiving headers...done")) 112 (nnheader-message 5 "nneething: Receiving headers...done"))
diff --git a/lisp/gnus/nnmbox.el b/lisp/gnus/nnmbox.el
index 78983a5cfef..a70a0395f37 100644
--- a/lisp/gnus/nnmbox.el
+++ b/lisp/gnus/nnmbox.el
@@ -106,7 +106,7 @@
106 (> number nnmail-large-newsgroup) 106 (> number nnmail-large-newsgroup)
107 (zerop (% count 20)) 107 (zerop (% count 20))
108 (nnheader-message 5 "nnmbox: Receiving headers... %d%%" 108 (nnheader-message 5 "nnmbox: Receiving headers... %d%%"
109 (/ (* count 100) number)))) 109 (floor (* count 100.0) number))))
110 110
111 (and (numberp nnmail-large-newsgroup) 111 (and (numberp nnmail-large-newsgroup)
112 (> number nnmail-large-newsgroup) 112 (> number nnmail-large-newsgroup)
diff --git a/lisp/gnus/nnmh.el b/lisp/gnus/nnmh.el
index 04270a554cf..cdbf38ae62d 100644
--- a/lisp/gnus/nnmh.el
+++ b/lisp/gnus/nnmh.el
@@ -109,7 +109,7 @@ as unread by Gnus.")
109 (and large 109 (and large
110 (zerop (% count 20)) 110 (zerop (% count 20))
111 (nnheader-message 5 "nnmh: Receiving headers... %d%%" 111 (nnheader-message 5 "nnmh: Receiving headers... %d%%"
112 (/ (* count 100) number)))) 112 (floor (* count 100.0) number))))
113 113
114 (when large 114 (when large
115 (nnheader-message 5 "nnmh: Receiving headers...done")) 115 (nnheader-message 5 "nnmh: Receiving headers...done"))
diff --git a/lisp/gnus/nnml.el b/lisp/gnus/nnml.el
index 8275e19f3b6..c825e097481 100644
--- a/lisp/gnus/nnml.el
+++ b/lisp/gnus/nnml.el
@@ -178,7 +178,7 @@ non-nil.")
178 (> number nnmail-large-newsgroup) 178 (> number nnmail-large-newsgroup)
179 (zerop (% count 20)) 179 (zerop (% count 20))
180 (nnheader-message 6 "nnml: Receiving headers... %d%%" 180 (nnheader-message 6 "nnml: Receiving headers... %d%%"
181 (/ (* count 100) number)))) 181 (floor (* count 100.0) number))))
182 182
183 (and (numberp nnmail-large-newsgroup) 183 (and (numberp nnmail-large-newsgroup)
184 (> number nnmail-large-newsgroup) 184 (> number nnmail-large-newsgroup)
diff --git a/lisp/gnus/nnspool.el b/lisp/gnus/nnspool.el
index 9e9537af1f9..f10b1ad6c54 100644
--- a/lisp/gnus/nnspool.el
+++ b/lisp/gnus/nnspool.el
@@ -174,7 +174,7 @@ there.")
174 (and do-message 174 (and do-message
175 (zerop (% (incf count) 20)) 175 (zerop (% (incf count) 20))
176 (nnheader-message 5 "nnspool: Receiving headers... %d%%" 176 (nnheader-message 5 "nnspool: Receiving headers... %d%%"
177 (/ (* count 100) number)))) 177 (floor (* count 100.0) number))))
178 178
179 (when do-message 179 (when do-message
180 (nnheader-message 5 "nnspool: Receiving headers...done")) 180 (nnheader-message 5 "nnspool: Receiving headers...done"))
diff --git a/lisp/gnus/nntp.el b/lisp/gnus/nntp.el
index 0891dba0387..b617a1beeb2 100644
--- a/lisp/gnus/nntp.el
+++ b/lisp/gnus/nntp.el
@@ -728,7 +728,7 @@ command whose response triggered the error."
728 (> number nntp-large-newsgroup) 728 (> number nntp-large-newsgroup)
729 (zerop (% received 20)) 729 (zerop (% received 20))
730 (nnheader-message 6 "NNTP: Receiving headers... %d%%" 730 (nnheader-message 6 "NNTP: Receiving headers... %d%%"
731 (/ (* received 100) number))) 731 (floor (* received 100.0) number)))
732 (nntp-accept-response)))) 732 (nntp-accept-response))))
733 (and (numberp nntp-large-newsgroup) 733 (and (numberp nntp-large-newsgroup)
734 (> number nntp-large-newsgroup) 734 (> number nntp-large-newsgroup)
@@ -965,7 +965,7 @@ command whose response triggered the error."
965 (> number nntp-large-newsgroup) 965 (> number nntp-large-newsgroup)
966 (zerop (% received 20)) 966 (zerop (% received 20))
967 (nnheader-message 6 "NNTP: Receiving articles... %d%%" 967 (nnheader-message 6 "NNTP: Receiving articles... %d%%"
968 (/ (* received 100) number))) 968 (floor (* received 100.0) number)))
969 (nntp-accept-response)))) 969 (nntp-accept-response))))
970 (and (numberp nntp-large-newsgroup) 970 (and (numberp nntp-large-newsgroup)
971 (> number nntp-large-newsgroup) 971 (> number nntp-large-newsgroup)
diff --git a/lisp/gnus/registry.el b/lisp/gnus/registry.el
index 96a89fca1b7..7bada9f3095 100644
--- a/lisp/gnus/registry.el
+++ b/lisp/gnus/registry.el
@@ -320,7 +320,7 @@ Errors out if the key exists already."
320 (when (and (< 0 expected) 320 (when (and (< 0 expected)
321 (= 0 (mod count 1000))) 321 (= 0 (mod count 1000)))
322 (message "reindexing: %d of %d (%.2f%%)" 322 (message "reindexing: %d of %d (%.2f%%)"
323 count expected (/ (* 100 count) expected))) 323 count expected (/ (* 100.0 count) expected)))
324 (dolist (val (cdr-safe (assq tr v))) 324 (dolist (val (cdr-safe (assq tr v)))
325 (let* ((value-keys (registry-lookup-secondary-value db tr val))) 325 (let* ((value-keys (registry-lookup-secondary-value db tr val)))
326 (push key value-keys) 326 (push key value-keys)
diff --git a/lisp/imenu.el b/lisp/imenu.el
index 65c52828c47..3a856b88397 100644
--- a/lisp/imenu.el
+++ b/lisp/imenu.el
@@ -499,10 +499,7 @@ If REVERSE is non-nil then the beginning is 100 and the end is 0."
499 (let ((pos (point)) 499 (let ((pos (point))
500 (total (buffer-size))) 500 (total (buffer-size)))
501 (and reverse (setq pos (- total pos))) 501 (and reverse (setq pos (- total pos)))
502 (if (> total 50000) 502 (floor (* 100.0 (1- pos)) (max total 1))))
503 ;; Avoid overflow from multiplying by 100!
504 (/ (1- pos) (max (/ total 100) 1))
505 (/ (* 100 (1- pos)) (max total 1)))))
506 503
507(defun imenu--split (list n) 504(defun imenu--split (list n)
508 "Split LIST into sublists of max length N. 505 "Split LIST into sublists of max length N.
diff --git a/lisp/international/ja-dic-cnv.el b/lisp/international/ja-dic-cnv.el
index edb6d8900e6..d9c77bf5652 100644
--- a/lisp/international/ja-dic-cnv.el
+++ b/lisp/international/ja-dic-cnv.el
@@ -280,7 +280,7 @@
280 (cons (cons kana candidates) skkdic-okuri-nasi-entries) 280 (cons (cons kana candidates) skkdic-okuri-nasi-entries)
281 skkdic-okuri-nasi-entries-count 281 skkdic-okuri-nasi-entries-count
282 (1+ skkdic-okuri-nasi-entries-count)) 282 (1+ skkdic-okuri-nasi-entries-count))
283 (setq ratio (floor (/ (* (point) 100.0) (point-max)))) 283 (setq ratio (floor (* (point) 100.0) (point-max)))
284 (if (/= (/ prev-ratio 10) (/ ratio 10)) 284 (if (/= (/ prev-ratio 10) (/ ratio 10))
285 (progn 285 (progn
286 (message "collected %2d%% ..." ratio) 286 (message "collected %2d%% ..." ratio)
@@ -306,7 +306,7 @@
306 (while l 306 (while l
307 (let ((kana (car (car l))) 307 (let ((kana (car (car l)))
308 (candidates (cdr (car l)))) 308 (candidates (cdr (car l))))
309 (setq ratio (/ (* count 100) skkdic-okuri-nasi-entries-count) 309 (setq ratio (floor (* count 100.0) skkdic-okuri-nasi-entries-count)
310 count (1+ count)) 310 count (1+ count))
311 (if (/= (/ prev-ratio 10) (/ ratio 10)) 311 (if (/= (/ prev-ratio 10) (/ ratio 10))
312 (progn 312 (progn
diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
index 1f893a72f8e..0685bac26c7 100644
--- a/lisp/net/ange-ftp.el
+++ b/lisp/net/ange-ftp.el
@@ -1613,7 +1613,7 @@ good, skip, fatal, or unknown."
1613 -6))) 1613 -6)))
1614 (if (zerop ange-ftp-xfer-size) 1614 (if (zerop ange-ftp-xfer-size)
1615 (ange-ftp-message "%s...%dk" ange-ftp-process-msg kbytes) 1615 (ange-ftp-message "%s...%dk" ange-ftp-process-msg kbytes)
1616 (let ((percent (/ (* 100 kbytes) ange-ftp-xfer-size))) 1616 (let ((percent (floor (* 100.0 kbytes) ange-ftp-xfer-size)))
1617 ;; cut out the redisplay of identical %-age messages. 1617 ;; cut out the redisplay of identical %-age messages.
1618 (unless (eq percent ange-ftp-last-percent) 1618 (unless (eq percent ange-ftp-last-percent)
1619 (setq ange-ftp-last-percent percent) 1619 (setq ange-ftp-last-percent percent)
diff --git a/lisp/nxml/rng-valid.el b/lisp/nxml/rng-valid.el
index 2bf8f1dfa63..61a96545a82 100644
--- a/lisp/nxml/rng-valid.el
+++ b/lisp/nxml/rng-valid.el
@@ -345,17 +345,11 @@ The schema is set like `rng-auto-set-schema'."
345 345
346(defun rng-compute-mode-line-string () 346(defun rng-compute-mode-line-string ()
347 (cond (rng-validate-timer 347 (cond (rng-validate-timer
348 (concat " Validated:" 348 (format " Validated:%d%%"
349 (number-to-string 349 (if (= 0 (buffer-size))
350 ;; Use floor rather than round because we want 350 0
351 ;; to show 99% rather than 100% for changes near 351 (floor (- rng-validate-up-to-date-end (point-min))
352 ;; the end. 352 (- (point-max) (point-min))))))
353 (floor (if (eq (buffer-size) 0)
354 0.0
355 (/ (* (- rng-validate-up-to-date-end (point-min))
356 100.0)
357 (- (point-max) (point-min))))))
358 "%%"))
359 ((> rng-error-count 0) 353 ((> rng-error-count 0)
360 (concat " " 354 (concat " "
361 (propertize "Invalid" 355 (propertize "Invalid"
diff --git a/lisp/org/org-colview.el b/lisp/org/org-colview.el
index e14849f68e4..e938ab4ae4b 100644
--- a/lisp/org/org-colview.el
+++ b/lisp/org/org-colview.el
@@ -1086,7 +1086,7 @@ display, or in the #+COLUMNS line of the current buffer."
1086(defun org-nofm-to-completion (n m &optional percent) 1086(defun org-nofm-to-completion (n m &optional percent)
1087 (if (not percent) 1087 (if (not percent)
1088 (format "[%d/%d]" n m) 1088 (format "[%d/%d]" n m)
1089 (format "[%d%%]"(floor (+ 0.5 (* 100. (/ (* 1.0 n) m))))))) 1089 (format "[%d%%]" (round (* 100.0 n) m))))
1090 1090
1091 1091
1092(defun org-columns-string-to-number (s fmt) 1092(defun org-columns-string-to-number (s fmt)
diff --git a/lisp/org/org-list.el b/lisp/org/org-list.el
index 73f24ce7bd8..432e4310fae 100644
--- a/lisp/org/org-list.el
+++ b/lisp/org/org-list.el
@@ -2555,8 +2555,8 @@ With optional prefix argument ALL, do this for the whole buffer."
2555 (checked (car (nth 3 cookie))) 2555 (checked (car (nth 3 cookie)))
2556 (total (cdr (nth 3 cookie))) 2556 (total (cdr (nth 3 cookie)))
2557 (new (if percentp 2557 (new (if percentp
2558 (format "[%d%%]" (/ (* 100 checked) 2558 (format "[%d%%]" (floor (* 100.0 checked)
2559 (max 1 total))) 2559 (max 1 total)))
2560 (format "[%d/%d]" checked total)))) 2560 (format "[%d/%d]" checked total))))
2561 (goto-char beg) 2561 (goto-char beg)
2562 (insert new) 2562 (insert new)
diff --git a/lisp/org/org.el b/lisp/org/org.el
index e9dae191b99..b545f9ee1cb 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -4346,7 +4346,8 @@ If TABLE-TYPE is non-nil, also check for table.el-type tables."
4346 (goto-char (point-min)) 4346 (goto-char (point-min))
4347 (while (re-search-forward org-table-any-line-regexp nil t) 4347 (while (re-search-forward org-table-any-line-regexp nil t)
4348 (unless quietly 4348 (unless quietly
4349 (message "Mapping tables: %d%%" (/ (* 100.0 (point)) (buffer-size)))) 4349 (message "Mapping tables: %d%%"
4350 (floor (* 100.0 (point)) (buffer-size))))
4350 (beginning-of-line 1) 4351 (beginning-of-line 1)
4351 (when (and (looking-at org-table-line-regexp) 4352 (when (and (looking-at org-table-line-regexp)
4352 ;; Exclude tables in src/example/verbatim/clocktable blocks 4353 ;; Exclude tables in src/example/verbatim/clocktable blocks
@@ -12679,7 +12680,8 @@ statistics everywhere."
12679 (outline-next-heading))) 12680 (outline-next-heading)))
12680 (setq new 12681 (setq new
12681 (if is-percent 12682 (if is-percent
12682 (format "[%d%%]" (/ (* 100 cnt-done) (max 1 cnt-all))) 12683 (format "[%d%%]" (floor (* 100.0 cnt-done)
12684 (max 1 cnt-all)))
12683 (format "[%d/%d]" cnt-done cnt-all)) 12685 (format "[%d/%d]" cnt-done cnt-all))
12684 ndel (- (match-end 0) checkbox-beg)) 12686 ndel (- (match-end 0) checkbox-beg))
12685 ;; handle overlays when updating cookie from column view 12687 ;; handle overlays when updating cookie from column view
diff --git a/lisp/play/decipher.el b/lisp/play/decipher.el
index f42ae90f3c8..c2268a9b057 100644
--- a/lisp/play/decipher.el
+++ b/lisp/play/decipher.el
@@ -793,7 +793,7 @@ TOTAL is the total number of letters in the ciphertext."
793 (insert (caar temp-list) 793 (insert (caar temp-list)
794 (format "%4d%3d%% " 794 (format "%4d%3d%% "
795 (cl-cadar temp-list) 795 (cl-cadar temp-list)
796 (/ (* 100 (cl-cadar temp-list)) total))) 796 (floor (* 100.0 (cl-cadar temp-list)) total)))
797 (setq temp-list (nthcdr 4 temp-list))) 797 (setq temp-list (nthcdr 4 temp-list)))
798 (insert ?\n) 798 (insert ?\n)
799 (setq freq-list (cdr freq-list) 799 (setq freq-list (cdr freq-list)
@@ -957,7 +957,7 @@ Creates the statistics buffer if it doesn't exist."
957 ": A B C D E F G H I J K L M N O P Q R S T U V W X Y Z *" 957 ": A B C D E F G H I J K L M N O P Q R S T U V W X Y Z *"
958 (format "%4d %4d %3d%%\n " 958 (format "%4d %4d %3d%%\n "
959 (cl-third entry) (cl-second entry) 959 (cl-third entry) (cl-second entry)
960 (/ (* 100 (cl-second entry)) total-chars)) 960 (floor (* 100.0 (cl-second entry)) total-chars))
961 (decipher--digram-counts (aref decipher--after i)) ?\n)))) 961 (decipher--digram-counts (aref decipher--after i)) ?\n))))
962 (setq buffer-read-only t) 962 (setq buffer-read-only t)
963 (set-buffer-modified-p nil) 963 (set-buffer-modified-p nil)
diff --git a/lisp/profiler.el b/lisp/profiler.el
index 2425d8c56a7..f28bbfe2768 100644
--- a/lisp/profiler.el
+++ b/lisp/profiler.el
@@ -56,7 +56,7 @@
56 (format "%s" object)))) 56 (format "%s" object))))
57 57
58(defun profiler-format-percent (number divisor) 58(defun profiler-format-percent (number divisor)
59 (concat (number-to-string (/ (* number 100) divisor)) "%")) 59 (format "%d%%" (floor (* 100.0 number) divisor)))
60 60
61(defun profiler-format-number (number) 61(defun profiler-format-number (number)
62 "Format NUMBER in human readable string." 62 "Format NUMBER in human readable string."
diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el
index 94dc34bb20e..c9f59451b7e 100644
--- a/lisp/progmodes/cc-cmds.el
+++ b/lisp/progmodes/cc-cmds.el
@@ -1809,7 +1809,7 @@ with a brace block."
1809 (c-save-buffer-state 1809 (c-save-buffer-state
1810 (beginning-of-defun-function end-of-defun-function 1810 (beginning-of-defun-function end-of-defun-function
1811 where pos name-end case-fold-search) 1811 where pos name-end case-fold-search)
1812 1812
1813 (save-restriction 1813 (save-restriction
1814 (widen) 1814 (widen)
1815 (save-excursion 1815 (save-excursion
@@ -3412,7 +3412,7 @@ Otherwise reindent just the current line."
3412 (if (< c-progress-interval (- now lastsecs)) 3412 (if (< c-progress-interval (- now lastsecs))
3413 (progn 3413 (progn
3414 (message "Indenting region... (%d%% complete)" 3414 (message "Indenting region... (%d%% complete)"
3415 (/ (* 100 (- (point) start)) (- end start))) 3415 (floor (* 100.0 (- (point) start)) (- end start)))
3416 (aset c-progress-info 2 now))) 3416 (aset c-progress-info 2 now)))
3417 ))) 3417 )))
3418 3418
diff --git a/lisp/progmodes/cpp.el b/lisp/progmodes/cpp.el
index bf8458e725a..0a51add68b6 100644
--- a/lisp/progmodes/cpp.el
+++ b/lisp/progmodes/cpp.el
@@ -234,7 +234,8 @@ A prefix arg suppresses display of that buffer."
234 (cpp-progress-message "Parsing...") 234 (cpp-progress-message "Parsing...")
235 (while (re-search-forward cpp-parse-regexp nil t) 235 (while (re-search-forward cpp-parse-regexp nil t)
236 (cpp-progress-message "Parsing...%d%%" 236 (cpp-progress-message "Parsing...%d%%"
237 (/ (* 100 (- (point) (point-min))) (buffer-size))) 237 (floor (* 100.0 (- (point) (point-min)))
238 (buffer-size)))
238 (let ((match (buffer-substring (match-beginning 0) (match-end 0)))) 239 (let ((match (buffer-substring (match-beginning 0) (match-end 0))))
239 (cond ((or (string-equal match "'") 240 (cond ((or (string-equal match "'")
240 (string-equal match "\"")) 241 (string-equal match "\""))
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 8e30aa29502..d7594428e8d 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -4881,7 +4881,7 @@ Cache to disk for quick recovery."
4881 props (car (cdr elem))) 4881 props (car (cdr elem)))
4882 (if (= (mod elem-cnt msg-cnt) 0) 4882 (if (= (mod elem-cnt msg-cnt) 0)
4883 (message "Converting XML routine info...%2d%%" 4883 (message "Converting XML routine info...%2d%%"
4884 (/ (* elem-cnt 100) nelem))) 4884 (floor (* elem-cnt 100.0) nelem)))
4885 (cond 4885 (cond
4886 ((eq type 'ROUTINE) 4886 ((eq type 'ROUTINE)
4887 (if (setq alias (assq 'alias_to props)) 4887 (if (setq alias (assq 'alias_to props))
@@ -8694,7 +8694,7 @@ can be used to detect possible name clashes during this process."
8694 (erase-buffer) 8694 (erase-buffer)
8695 (while (setq routine (pop routines)) 8695 (while (setq routine (pop routines))
8696 (if (= (mod (setq n (1+ n)) step) 0) 8696 (if (= (mod (setq n (1+ n)) step) 0)
8697 (message "Compiling list...(%2d%%)" (/ (* n 100) nroutines))) 8697 (message "Compiling list...(%2d%%)" (floor (* n 100.0) nroutines)))
8698 8698
8699 ;; Get a list of all twins 8699 ;; Get a list of all twins
8700 (setq twins (idlwave-routine-twins routine (or lroutines routines))) 8700 (setq twins (idlwave-routine-twins routine (or lroutines routines)))
diff --git a/lisp/progmodes/opascal.el b/lisp/progmodes/opascal.el
index 2eba620ceb2..ef3433f003b 100644
--- a/lisp/progmodes/opascal.el
+++ b/lisp/progmodes/opascal.el
@@ -368,7 +368,7 @@ routine.")
368 ;; Report the percentage complete. 368 ;; Report the percentage complete.
369 (setq opascal-progress-last-reported-point p) 369 (setq opascal-progress-last-reported-point p)
370 (message "%s %s ... %d%%" 370 (message "%s %s ... %d%%"
371 desc (buffer-name) (/ (* 100 p) (point-max)))))) 371 desc (buffer-name) (floor (* 100.0 p) (point-max))))))
372 372
373(defun opascal-next-line-start (&optional from-point) 373(defun opascal-next-line-start (&optional from-point)
374 ;; Returns the first point of the next line. 374 ;; Returns the first point of the next line.
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 5ed0ff0ebed..16e4e8ed53d 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -7383,11 +7383,11 @@ only-lines."
7383 (- (nth 1 (current-time)) (aref vhdl-progress-info 2)))) 7383 (- (nth 1 (current-time)) (aref vhdl-progress-info 2))))
7384 (let ((delta (- (aref vhdl-progress-info 1) 7384 (let ((delta (- (aref vhdl-progress-info 1)
7385 (aref vhdl-progress-info 0)))) 7385 (aref vhdl-progress-info 0))))
7386 (if (= 0 delta) 7386 (message "%s... (%2d%%)" string
7387 (message (concat string "... (100%s)") "%") 7387 (if (= 0 delta)
7388 (message (concat string "... (%2d%s)") 7388 100
7389 (/ (* 100 (- pos (aref vhdl-progress-info 0))) 7389 (floor (* 100.0 (- pos (aref vhdl-progress-info 0)))
7390 delta) "%"))) 7390 delta))))
7391 (aset vhdl-progress-info 2 (nth 1 (current-time))))) 7391 (aset vhdl-progress-info 2 (nth 1 (current-time)))))
7392 7392
7393;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 7393;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -13881,10 +13881,10 @@ hierarchy otherwise.")
13881 ;; do for all files 13881 ;; do for all files
13882 (while file-list 13882 (while file-list
13883 (unless noninteractive 13883 (unless noninteractive
13884 (message "Scanning %s %s\"%s\"... (%2d%s)" 13884 (message "Scanning %s %s\"%s\"... (%2d%%)"
13885 (if is-directory "directory" "files") 13885 (if is-directory "directory" "files")
13886 (or num-string "") name 13886 (or num-string "") name
13887 (/ (* 100 (- no-files (length file-list))) no-files) "%")) 13887 (floor (* 100.0 (- no-files (length file-list))) no-files)))
13888 (let ((file-name (abbreviate-file-name (car file-list))) 13888 (let ((file-name (abbreviate-file-name (car file-list)))
13889 ent-list arch-list arch-ent-list conf-list 13889 ent-list arch-list arch-ent-list conf-list
13890 pack-list pack-body-list inst-list inst-ent-list) 13890 pack-list pack-body-list inst-list inst-ent-list)
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index e76b332ee3c..0ba470be68c 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -6043,10 +6043,7 @@ XSTART YSTART are the relative position for the first page in a sheet.")
6043 (progn 6043 (progn
6044 (setq ps-razchunk q-done) 6044 (setq ps-razchunk q-done)
6045 (message "Formatting...%3d%%" 6045 (message "Formatting...%3d%%"
6046 (if (< q-todo 100) 6046 (floor (* 100.0 q-done) q-todo)))))))
6047 (/ (* 100 q-done) q-todo)
6048 (/ q-done (/ q-todo 100)))
6049 ))))))
6050 6047
6051(defvar ps-last-font nil) 6048(defvar ps-last-font nil)
6052 6049
diff --git a/lisp/simple.el b/lisp/simple.el
index 7eed279ed59..1a4bcf124db 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1255,10 +1255,7 @@ in *Help* buffer. See also the command `describe-char'."
1255 (end (point-max)) 1255 (end (point-max))
1256 (pos (point)) 1256 (pos (point))
1257 (total (buffer-size)) 1257 (total (buffer-size))
1258 (percent (if (> total 50000) 1258 (percent (round (* 100.0 (1- pos)) (max 1 total)))
1259 ;; Avoid overflow from multiplying by 100!
1260 (/ (+ (/ total 200) (1- pos)) (max (/ total 100) 1))
1261 (/ (+ (/ total 2) (* 100 (1- pos))) (max total 1))))
1262 (hscroll (if (= (window-hscroll) 0) 1259 (hscroll (if (= (window-hscroll) 0)
1263 "" 1260 ""
1264 (format " Hscroll=%d" (window-hscroll)))) 1261 (format " Hscroll=%d" (window-hscroll))))
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index 9d6d19e6e1e..b1232d4c0a0 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -2099,7 +2099,7 @@ If FLAG is nil, a message is echoed if point was incremented at least
2099 (let* ((size (- (point-max) (point-min))) 2099 (let* ((size (- (point-max) (point-min)))
2100 (perc (if (= size 0) 2100 (perc (if (= size 0)
2101 100 2101 100
2102 (/ (* 100 (- (point) (point-min))) size)))) 2102 (floor (* 100.0 (- (point) (point-min))) size))))
2103 (when (>= perc (+ bibtex-progress-lastperc 2103 (when (>= perc (+ bibtex-progress-lastperc
2104 bibtex-progress-interval)) 2104 bibtex-progress-interval))
2105 (setq bibtex-progress-lastperc perc) 2105 (setq bibtex-progress-lastperc perc)
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index e0749180611..64aa3de146e 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -1350,7 +1350,7 @@ that may be included as part of a word (see `ispell-dictionary-alist')."
1350 (if (and flyspell-issue-message-flag (= count 100)) 1350 (if (and flyspell-issue-message-flag (= count 100))
1351 (progn 1351 (progn
1352 (message "Spell Checking...%d%%" 1352 (message "Spell Checking...%d%%"
1353 (* 100 (/ (float (- (point) beg)) (- end beg)))) 1353 (floor (* 100.0 (- (point) beg)) (- end beg)))
1354 (setq count 0)) 1354 (setq count 0))
1355 (setq count (+ 1 count))) 1355 (setq count (+ 1 count)))
1356 (flyspell-word) 1356 (flyspell-word)
@@ -1403,7 +1403,7 @@ The buffer to mark them in is `flyspell-large-region-buffer'."
1403 ;; be unnecessary too. -- rms. 1403 ;; be unnecessary too. -- rms.
1404 (if flyspell-issue-message-flag 1404 (if flyspell-issue-message-flag
1405 (message "Spell Checking...%d%% [%s]" 1405 (message "Spell Checking...%d%% [%s]"
1406 (* 100 (/ (float (point)) (point-max))) 1406 (floor (* 100.0 (point)) (point-max))
1407 word)) 1407 word))
1408 (with-current-buffer flyspell-large-region-buffer 1408 (with-current-buffer flyspell-large-region-buffer
1409 (goto-char buffer-scan-pos) 1409 (goto-char buffer-scan-pos)
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index edc78e52efa..fa9f0fa638a 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -1893,7 +1893,9 @@ all the table specific features."
1893 (while (and (re-search-forward border3 (point-max) t) 1893 (while (and (re-search-forward border3 (point-max) t)
1894 (not (and (input-pending-p) 1894 (not (and (input-pending-p)
1895 table-abort-recognition-when-input-pending))) 1895 table-abort-recognition-when-input-pending)))
1896 (message "Recognizing tables...(%d%%)" (/ (* 100 (match-beginning 0)) (- (point-max) (point-min)))) 1896 (message "Recognizing tables...(%d%%)"
1897 (floor (* 100.0 (match-beginning 0))
1898 (- (point-max) (point-min))))
1897 (let ((beg (match-beginning 0)) 1899 (let ((beg (match-beginning 0))
1898 end) 1900 end)
1899 (if (re-search-forward non-border (point-max) t) 1901 (if (re-search-forward non-border (point-max) t)