1. 程式人生 > >如何提高浮點數變整數的精度

如何提高浮點數變整數的精度

轉載請註明出處:http://blog.csdn.net/qq_26093511/article/details/52884497

在我們的產品設計中,經常會遇到浮點數變整數的時候,那麼,我們首先看看,浮點數變整數的精度如何?

1、分別定義一個浮點數26.6和26.4,把這個數強制轉換成整數後,是多少?

按理說,或者說,我們希望的結果,應該是四捨五入的27和26,但是結果是程式只取了整數部分,小數部分根本沒有給我們四捨五入。

2、用 modf 函式,提取浮點數的小數部分。

     if  小數部分 < 0.5

         對這個浮點數不做處理,直接取整; else         這個浮點數加上 一或0.5後,再取整;
------------------------------------------------------------------------------- 函式名:modf 標頭檔案:<math.h> 函式原型:double modf(double x, double *ipart) 函式用途:分解x,以得到x的整數和小數部分 輸入引數:x 待分解的數輸出引數:ipath x 的整數部分 返回值:x 的小數部分

3、直接使用  math.h  裡的函式

ceil(x)返回不小於x的最小整數值(然後轉換為double型)。

floor(x)返回不大於x的最大整數值。

round(x)返回x的四捨五入整數值。


相關推薦

如何提高點數整數精度

轉載請註明出處:http://blog.csdn.net/qq_26093511/article/details/52884497 在我們的產品設計中,經常會遇到浮點數變整數的時候,那麼,我們首先看看,浮點數變整數的精度如何? 1、分別定義一個浮點數26.6和2

java 點數整數精度處理

System.out.println("------case1------"); BigDecimal bigDecimal = new BigDecimal(37.98); System.out.println(bigDecimal); //37.9799999999999968736

shell比較點數整數

ssi 工作 示例 一個 style 朋友 shell code nbsp   今天有一個朋友忽然問我在shell中,如何比較浮點數和整數,倒是把我問的一楞,在工作中確實沒有遇到這個場景。我們也知道,在shell中數字的計算通常都會轉換成整數,比如說1.1和1會被認為是一樣

IEEE 754 點數的表示精度探討

選擇 固定 images 方向 post 可用 分用 lan text IEEE 754 浮點數的表示精度探討 前言 從網上看到不少程序猿對浮點數精度問題有非常多疑問,在論壇上發貼詢問。非常多熱心人給予了解答,但我發現一些解答中有些許小的錯誤和認識不

JavaScript 點數及運算精度調整總結

chrom 作用域 運算 lac ber ace 標準 0.12 推薦 JavaScript 浮點數及運算精度調整總結 JavaScript 只有一種數字類型 Number,而且在Javascript中所有的數字都是以IEEE-754標準格式表示的。浮點數的精度問題不是J

點數轉化整數

浮點數轉化成整數,就有以下四種情況。  1.直接轉化 #include<stdio.h> int main() { float f = 1.5; int a; a=(int)f; printf("a=%d",a); return

點數運算的精度問題

問題描述 在 JavaScript 中整數和浮點數都屬於 Number 資料型別,所有數字都是以 64 位浮點數形式儲存,即便整數也是如此。 所以我們在列印 1.00 這樣的浮點數的結果是 1 而非 1.00 。在一些特殊的數值表示中,例如金額,這樣看上去有點變扭,但是至少值是正確了。然而要

JavaScript 點數運算的精度問題

問題描述 在 JavaScript 中整數和浮點數都屬於 Number 資料型別,所有數字都是以 64 位浮點數形式儲存,即便整數也是如此。 所以我們在列印 1.00 這樣的浮點數的結果是 1 而非 1.00 。在一些特殊的數值表示中,例如金額,這樣看上去有點變扭,但是至少值是正確了。然而要命的是,當浮點數做

python 點數整數的比較

舉個栗子: #!/usr/bin/env python # encoding: utf-8 a = 10 b = 10 c = 100 d = 100 e = 10.0 f = 10.0 print(a is b) print(c is d) print(e

C語言基礎: 點數轉化整數(向上取整、向下取整)| 求絕對值函式

Objective-C拓展了C,自然很多用法是和C一致的。比如浮點數轉化成整數,就有以下四種情況。  1.簡單粗暴,直接轉化 float f = 1.5; int a;a = (int)f; NSLog("a = %d",a); 輸出結果是1。(int)是強制型別轉化,丟棄浮點數的小數部分。

poi 解析excel 點數整數的讀取

我現在做資料匯入,用poi解析excel,現在遇到一個問題,因為poi解析到的數值型別的資料,預設會轉成double型別,我判斷如果型別是CELL_TYPE_NUMERIC,想做特殊處理,現在有兩個問題,請教一下大家:   1.這一列裡可能有整數,也可能有浮點數,整數的,讀取出來,要去點後邊的".0",小數是

大數計算(進階) 支援大點數的任意精度加減乘除

上一篇實現了大數加法,乘除法都是簡單的複用加法,這樣做時間複雜度高,精度低。進階:1.乘法模擬豎式計算方法 核心思路是num1[i]*num2[j]的結果一定對應乘積中的[i+j]位,並且考慮對[i+j+1]位的進位。    這樣的時間複雜度為O(m*n) 而簡單的複用加法的

點數計算注意精度問題

最近看書看到一個簡單的題, 問,下面程式執行結果是什麼? #include <stdio.h> int main(int argc, char *argv[]) { double i; for (i = 0; i != 10; i += 0.1) {

java正則判斷是否是數字(點數整數

public static boolean isNumber(String str) { //採用正則表示式的方式來判斷一個字串是否為數字,這種方式判斷面比較全 //可以

C++ 字串轉換為點數時的精度問題

#include<stdio.h> /*庫檔案包含*/ #include<string.h> /*用於字串操作*/ #include<stdlib.h> /*用於exit函式*/ /***************************

判斷兩個雙精度點數是否整除!

防止 src 溢出 客戶端 market nbsp 道理 有效 無法   這幾天在開發公司項目中,由於屬於期貨產品,所以在此過程中遇到價格和最小單位價格的除法計算。 眾所周知浮點數在計算機中為近視值。比如價格,客戶端輸入的價格為145.5,但是我的服務端斷點顯示為145.4

golang 點數精度的效率對比

浮點數 pre span now() 其他 shift pow 效率 log 需求 浮點數取2位精度輸出 實現   代碼 package main import ( "time" "log" "strconv" "fmt" )

1、量,編碼,print,模塊調用,數據類型(數字/點數/字符串等),數據運算,if else,for,while,break,continue

odin 運算符 雙精度 col 格式 for in yield python3 fin # -*- coding:utf8 -*- name = "Newname" 上訴代碼聲明了一個變量,命名為name,變量name的值為:"Newname" 變量定義的規則: 1、

php學習筆記-php中把點數轉化為整數

floor 它的 gpo 操作 post bsp 有時 原因 結果 在php中有時候會遇到比如 14.6%3這種操作,php是會先把14.6轉化為整數再做其它的操作,那麽這個轉化為整數的操作是floor(14.6)還是ceil(14.6)還是round(14.6)呢?都不是

Java 大數(整數+點數) 基本函數

max ply system.in scanner trac next pub args string import java.math.BigDecimal; import java.math.BigInteger; import java.util.