精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

不掌握這些坑,你敢用BigDecimal嗎?

開發 項目管理
本篇文章介紹了BigDecimal使用中場景的坑,以及基于這些坑我們得出的“最佳實踐”。雖然某些場景下推薦使用BigDecimal,它能夠達到更好的精度,但性能相較于double和float,還是有一定的損失的,特別在處理龐大,復雜的運算時尤為明顯。

背景

一直從事金融相關項目,所以對BigDecimal再熟悉不過了,也曾看到很多同學因為不知道、不了解或使用不當導致資損事件發生。

所以,如果你從事金融相關項目,或者你的項目中涉及到金額的計算,那么你一定要花時間看看這篇文章,全面學習一下BigDecimal。

BigDecimal概述

Java在java.math包中提供的API類BigDecimal,用來對超過16位有效位的數進行精確的運算。雙精度浮點型變量double可以處理16位有效數,但在實際應用中,可能需要對更大或者更小的數進行運算和處理。

一般情況下,對于不需要準確計算精度的數字,可以直接使用Float和Double處理,但是Double.valueOf(String) 和Float.valueOf(String)會丟失精度。所以如果需要精確計算的結果,則必須使用BigDecimal類來操作。

BigDecimal對象提供了傳統的+、-、*、/等算術運算符對應的方法,通過這些方法進行相應的操作。BigDecimal都是不可變的(immutable)的, 在進行每一次四則運算時,都會產生一個新的對象 ,所以在做加減乘除運算時要記得要保存操作后的值。

BigDecimal的4個坑

在使用BigDecimal時,有4種使用場景下的坑,你一定要了解一下,如果使用不當,必定很慘。掌握這些案例,當別人寫出有坑的代碼,你也能夠一眼識別出來,大牛就是這么練成的。

第一:浮點類型的坑

在學習了解BigDecimal的坑之前,先來說一個老生常談的問題:如果使用Float、Double等浮點類型進行計算時,有可能得到的是一個近似值,而不是精確的值。

比如下面的代碼:

@Test
public void test0(){
float a = 1;
float b = 0.9f;
System.out.println(a - b);
}

結果是多少?0.1嗎?不是,執行上面代碼執行的結果是0.100000024。之所以產生這樣的結果,是因為0.1的二進制表示是無限循環的。由于計算機的資源是有限的,所以是沒辦法用二進制精確的表示 0.1,只能用「近似值」來表示,就是在有限的精度情況下,最大化接近 0.1 的二進制數,于是就會造成精度缺失的情況。

關于上述的現象大家都知道,不再詳細展開。同時,還會得出結論在科學計數法時可考慮使用浮點類型,但如果是涉及到金額計算要使用BigDecimal來計算。

那么,BigDecimal就一定能避免上述的浮點問題嗎?來看下面的示例:

@Test
public void test1(){
BigDecimal a = new BigDecimal(0.01);
BigDecimal b = BigDecimal.valueOf(0.01);
System.out.println("a = " + a);
System.out.println("b = " + b);
}

上述單元測試中的代碼,a和b結果分別是什么?

a = 0.01000000000000000020816681711721685132943093776702880859375
b = 0.01

上面的實例說明,即便是使用BigDecimal,結果依舊會出現精度問題。這就涉及到創建BigDecimal對象時,如果有初始值,是采用new BigDecimal的形式,還是通過BigDecimal#valueOf方法了。

之所以會出現上述現象,是因為new BigDecimal時,傳入的0.1已經是浮點類型了,鑒于上面說的這個值只是近似值,在使用new BigDecimal時就把這個近似值完整的保留下來了。

而BigDecimal#valueOf則不同,它的源碼實現如下:

public static BigDecimal valueOf(double val) {
// Reminder: a zero double returns '0.0', so we cannot fastpath
// to use the constant ZERO. This might be important enough to
// justify a factory approach, a cache, or a few private
// constants, later.
return new BigDecimal(Double.toString(val));
}

在valueOf內部,使用Double#toString方法,將浮點類型的值轉換成了字符串,因此就不存在精度丟失問題了。

此時就得出一個基本的結論:第一,在使用BigDecimal構造函數時,盡量傳遞字符串而非浮點類型;第二,如果無法滿足第一條,則可采用BigDecimal#valueOf方法來構造初始化值。

這里延伸一下,BigDecimal常見的構造方法有如下幾種:

BigDecimal(int)       創建一個具有參數所指定整數值的對象。
BigDecimal(double) 創建一個具有參數所指定雙精度值的對象。
BigDecimal(long) 創建一個具有參數所指定長整數值的對象。
BigDecimal(String) 創建一個具有參數所指定以字符串表示的數值的對象。

其中涉及到參數類型為double的構造方法,會出現上述的問題,使用時需特別留意。

第二:浮點精度的坑

如果比較兩個BigDecimal的值是否相等,你會如何比較?使用equals方法還是compareTo方法呢?

先來看一個示例:

@Test
public void test2(){
BigDecimal a = new BigDecimal("0.01");
BigDecimal b = new BigDecimal("0.010");
System.out.println(a.equals(b));
System.out.println(a.compareTo(b));
}

乍一看感覺可能相等,但實際上它們的本質并不相同。

equals方法是基于BigDecimal實現的equals方法來進行比較的,直觀印象就是比較兩個對象是否相同,那么代碼是如何實現的呢?

@Override
public boolean equals(Object x) {
if (!(x instanceof BigDecimal))
return false;
BigDecimal xDec = (BigDecimal) x;
if (x == this)
return true;
if (scale != xDec.scale)
return false;
long s = this.intCompact;
long xs = xDec.intCompact;
if (s != INFLATED) {
if (xs == INFLATED)
xs = compactValFor(xDec.intVal);
return xs == s;
} else if (xs != INFLATED)
return xs == compactValFor(this.intVal);

return this.inflated().equals(xDec.inflated());
}

仔細閱讀代碼可以看出,equals方法不僅比較了值是否相等,還比較了精度是否相同。上述示例中,由于兩者的精度不同,所以equals方法的結果當然是false了。而compareTo方法實現了Comparable接口,真正比較的是值的大小,返回的值為-1(小于),0(等于),1(大于)。

基本結論:通常情況,如果比較兩個BigDecimal值的大小,采用其實現的compareTo方法;如果嚴格限制精度的比較,那么則可考慮使用equals方法。

另外,這種場景在比較0值的時候比較常見,比如比較BigDecimal("0")、BigDecimal("0.0")、BigDecimal("0.00"),此時一定要使用compareTo方法進行比較。

第三:設置精度的坑

在項目中看到好多同學通過BigDecimal進行計算時不設置計算結果的精度和舍入模式,真是著急人,雖然大多數情況下不會出現什么問題。但下面的場景就不一定了:

@Test
public void test3(){
BigDecimal a = new BigDecimal("1.0");
BigDecimal b = new BigDecimal("3.0");
a.divide(b);
}

執行上述代碼的結果是什么?ArithmeticException異常!

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

at java.math.BigDecimal.divide(BigDecimal.java:1690)
...

這個異常的發生在官方文檔中也有說明:

If the quotient has a nonterminating decimal expansion and the operation is specified to return an exact result, an ArithmeticException is thrown. Otherwise, the exact result of the division is returned, as done for other operations.

總結一下就是,如果在除法(divide)運算過程中,如果商是一個無限小數(0.333…),而操作的結果預期是一個精確的數字,那么將會拋出ArithmeticException異常。

此時,只需在使用divide方法時指定結果的精度即可:

@Test
public void test3(){
BigDecimal a = new BigDecimal("1.0");
BigDecimal b = new BigDecimal("3.0");
BigDecimal c = a.divide(b, 2,RoundingMode.HALF_UP);
System.out.println(c);
}

執行上述代碼,輸入結果為0.33。

基本結論:在使用BigDecimal進行(所有)運算時,一定要明確指定精度和舍入模式。

拓展一下,舍入模式定義在RoundingMode枚舉類中,共有8種:

RoundingMode.UP:舍入遠離零的舍入模式。在丟棄非零部分之前始終增加數字(始終對非零舍棄部分前面的數字加1)。注意,此舍入模式始終不會減少計算值的大小。

RoundingMode.DOWN:接近零的舍入模式。在丟棄某部分之前始終不增加數字(從不對舍棄部分前面的數字加1,即截短)。注意,此舍入模式始終不會增加計算值的大小。

RoundingMode.CEILING:接近正無窮大的舍入模式。如果 BigDecimal 為正,則舍入行為與 ROUNDUP 相同;如果為負,則舍入行為與 ROUNDDOWN 相同。注意,此舍入模式始終不會減少計算值。

RoundingMode.FLOOR:接近負無窮大的舍入模式。如果 BigDecimal 為正,則舍入行為與 ROUNDDOWN 相同;如果為負,則舍入行為與 ROUNDUP 相同。注意,此舍入模式始終不會增加計算值。

RoundingMode.HALF_UP:向“最接近的”數字舍入,如果與兩個相鄰數字的距離相等,則為向上舍入的舍入模式。如果舍棄部分 >= 0.5,則舍入行為與 ROUND_UP 相同;否則舍入行為與 ROUND_DOWN 相同。注意,這是我們在小學時學過的舍入模式(四舍五入)。

RoundingMode.HALF_DOWN:向“最接近的”數字舍入,如果與兩個相鄰數字的距離相等,則為上舍入的舍入模式。如果舍棄部分 > 0.5,則舍入行為與 ROUND_UP 相同;否則舍入行為與 ROUND_DOWN 相同(五舍六入)。

RoundingMode.HALF_EVEN:向“最接近的”數字舍入,如果與兩個相鄰數字的距離相等,則向相鄰的偶數舍入。如果舍棄部分左邊的數字為奇數,則舍入行為與 ROUNDHALFUP 相同;如果為偶數,則舍入行為與 ROUNDHALF_DOWN 相同。注意,在重復進行一系列計算時,此舍入模式可以將累加錯誤減到最小。此舍入模式也稱為“銀行家舍入法”,主要在美國使用。四舍六入,五分兩種情況。如果前一位為奇數,則入位,否則舍去。以下例子為保留小數點1位,那么這種舍入方式下的結果。1.15 ==> 1.2 ,1.25 ==> 1.2

RoundingMode.UNNECESSARY:斷言請求的操作具有精確的結果,因此不需要舍入。如果對獲得精確結果的操作指定此舍入模式,則拋出ArithmeticException。

通常我們使用的四舍五入即RoundingMode.HALF_UP。

第四:三種字符串輸出的坑

先來看看下面的代碼:

@Test
public void test4(){
BigDecimal a = BigDecimal.valueOf(35634535255456719.22345634534124578902);
System.out.println(a.toString());
}

執行的結果是上述對應的值嗎?并不是:

3.563453525545672E+16

也就是說,本來想打印字符串的,結果打印出來的是科學計數法的值。

這里我們需要了解BigDecimal轉換字符串的三個方法

  • toPlainString():不使用任何科學計數法;
  • toString():在必要的時候使用科學計數法;
  • toEngineeringString() :在必要的時候使用工程計數法。類似于科學計數法,只不過指數的冪都是3的倍數,這樣方便工程上的應用,因為在很多單位轉換的時候都是10^3;

三種方法展示結果示例如下:

圖片

計算法

基本結論:**根據數據結果展示格式不同,采用不同的字符串輸出方法,通常使用比較多的方法為toPlainString()**。

另外,NumberFormat類的format()方法可以使用BigDecimal對象作為其參數,可以利用BigDecimal對超出16位有效數字的貨幣值,百分值,以及一般數值進行格式化控制。

使用示例如下:

NumberFormat currency = NumberFormat.getCurrencyInstance(); //建立貨幣格式化引用
NumberFormat percent = NumberFormat.getPercentInstance(); //建立百分比格式化引用
percent.setMaximumFractionDigits(3); //百分比小數點最多3位

BigDecimal loanAmount = new BigDecimal("15000.48"); //金額
BigDecimal interestRate = new BigDecimal("0.008"); //利率
BigDecimal interest = loanAmount.multiply(interestRate); //相乘

System.out.println("金額:\t" + currency.format(loanAmount));
System.out.println("利率:\t" + percent.format(interestRate));
System.out.println("利息:\t" + currency.format(interest));

輸出結果如下:

金額: ¥15,000.48 
利率: 0.8%
利息: ¥120.00

小結

本篇文章介紹了BigDecimal使用中場景的坑,以及基于這些坑我們得出的“最佳實踐”。雖然某些場景下推薦使用BigDecimal,它能夠達到更好的精度,但性能相較于double和float,還是有一定的損失的,特別在處理龐大,復雜的運算時尤為明顯。故一般精度的計算沒必要使用BigDecimal。而必須使用時,一定要規避上述的坑。

責任編輯:武曉燕 來源: 程序新視界
相關推薦

2024-05-30 12:15:04

2020-12-24 15:26:07

Redis數據庫

2023-03-13 13:36:00

Go擴容切片

2022-11-04 13:06:47

JVMJava程序

2019-11-20 10:38:36

路由路由協議路由器

2021-01-08 09:44:23

Faceboo隱私數據安全

2023-06-30 08:10:14

JavaBigDecimal

2020-11-09 07:25:20

函數 JavaScript數據

2020-04-14 08:46:47

Java對象編譯器

2017-09-14 14:50:10

2020-06-04 14:15:55

Java中BigDecimal函數

2019-04-23 11:21:57

ERP系統管理信息化

2018-09-11 09:14:52

面試公司缺點

2019-06-10 13:50:08

Linux命令shell

2022-09-13 09:14:48

架構系統

2012-03-22 21:04:21

2011-09-16 15:10:46

Android應用IOS應用Death App

2016-03-28 13:39:58

戴爾

2019-12-30 09:28:53

Kafka集群ZooKeeper

2018-02-05 10:18:42

技術管理注意
點贊
收藏

51CTO技術棧公眾號

日韩一级大片| 日韩08精品| 国产精品久久久久影视| 亚洲综合大片69999| 国产91av视频| 欧美极品中文字幕| 日韩小视频在线观看专区| 日韩欧美视频网站| 久操视频在线观看| 99国产精品久久久久| 91色视频在线观看| 亚洲国产av一区二区三区| 欧美永久精品| 在线激情影院一区| 玖草视频在线观看| 日韩欧美中文字幕一区二区三区 | 在线欧美一区二区| 精品亚洲永久免费精品 | 亚洲激情网站| 日韩一区二区福利| 30一40一50老女人毛片| 亚洲午夜一区二区三区| 欧美在线激情网| 亚洲精品一区二区三区在线播放| 97品白浆高清久久久久久| 在线观看网站黄不卡| 和岳每晚弄的高潮嗷嗷叫视频| 91精品国产综合久久久久久豆腐| 不卡欧美aaaaa| 亚洲一区二区少妇| 一区二区三区在线免费观看视频| 国产精品美女| 国内精品久久久久久影视8| 日本在线观看网址| 欧州一区二区| 亚洲视频第一页| 亚洲跨种族黑人xxx| www.99av.com| 欧美动物xxx| 欧美性猛交xxxx富婆弯腰| 免费高清一区二区三区| 羞羞网站在线免费观看| 中文字幕在线不卡一区二区三区| 日韩视频在线播放| 黄视频在线播放| 久久精品一区蜜桃臀影院| 99www免费人成精品| 国产精品无码在线播放| 免费av网站大全久久| 国产成人综合av| 亚洲欧美日韩一区二区三区四区| 免费日韩av片| 性色av一区二区咪爱| 91精品国产高潮对白| 亚洲高清av| 91高清在线免费观看| 日韩激情在线播放| 国产亚洲激情| 国产第一区电影| 夜夜爽8888| 国产精品一区二区久激情瑜伽| 91亚洲一区精品| www香蕉视频| www.性欧美| 久久婷婷国产综合尤物精品| 欧美视频综合| 国产精品美女久久福利网站| 一级一片免费播放| 视频在线这里都是精品| 午夜久久久久久久久| 国产精品97在线| 成人av集中营| 欧美美女直播网站| 动漫av在线免费观看| 亚欧洲精品视频在线观看| 亚洲欧美激情另类校园| 香蕉成人在线视频| 国产一区美女| 国产经典一区二区| 国产精品熟女久久久久久| 成人一级片在线观看| 蜜桃传媒视频麻豆第一区免费观看 | 久久一区亚洲| 国产日韩欧美在线| 日韩在线一区二区三区四区| 国产亚洲精品免费| 18视频在线观看娇喘| 国内激情视频在线观看| 欧美在线观看你懂的| 超碰中文字幕在线观看| 欧美激情影院| 久久精品91久久香蕉加勒比| 日本一区二区免费在线观看| 日本美女视频一区二区| 91视频最新| 韩国福利在线| 亚洲国产一区二区在线播放| 尤蜜粉嫩av国产一区二区三区| 欧美影院在线| 国产一区二区黑人欧美xxxx| 九九视频免费观看| 青青国产91久久久久久| 国产亚洲一区在线播放| 亚洲麻豆精品| 色综合久久天天| 美女日批在线观看| 欧美成人自拍| 日本午夜精品理论片a级appf发布| aaa一区二区| 国产欧美日产一区| 久色视频在线播放| 欧美视频二区欧美影视| 一区二区亚洲欧洲国产日韩| 日韩成人免费观看| 国产麻豆精品theporn| 欧美欧美一区二区| 丁香花在线观看完整版电影| 777欧美精品| 国产男男chinese网站| 韩国av一区| 成人黄色在线观看| 992tv免费直播在线观看| 精品日本高清在线播放| aaaaa黄色片| 91精品啪在线观看国产18| 国产精品麻豆va在线播放| 深夜福利视频在线观看| 亚洲成人7777| 丰满熟女人妻一区二区三区| 女人色偷偷aa久久天堂| 91久久国产精品| 日本美女在线中文版| 欧美亚洲国产怡红院影院| 国产手机在线观看| 国产亚洲精品自拍| 久久国产精品久久| 中文字幕在线视频网站| 日韩电影网在线| 日韩黄色一级大片| aaa亚洲精品一二三区| 国产一区二区四区| 久久365资源| 97激碰免费视频| 性感美女视频一二三| 亚洲成人免费av| 日韩av手机在线播放| 亚洲久久成人| 欧美久久综合性欧美| 日韩三区免费| 日韩在线视频播放| 国产精品人妻一区二区三区| 亚洲丝袜另类动漫二区| 91日韩精品视频| 综合激情在线| 国产在线视频欧美一区二区三区| 国产美女精品写真福利视频| 日韩电影中文字幕在线| 99久久精品国产亚洲| 中文字幕av免费专区久久| 国产原创精品在线| 午夜精品久久久久99热蜜桃导演| 福利视频久久| 卡通欧美亚洲| www.亚洲一区| 亚洲欧美黄色片| 狠狠躁18三区二区一区| 精品无码在线观看| 国产一区二区三区在线观看免费视频| 免费看黄色a级片| 巨人精品**| 国产精品日韩av| 五月花成人网| 亚洲欧美在线一区| 亚洲图片欧美在线| 亚洲高清在线精品| 美女爆乳18禁www久久久久久| 麻豆精品国产91久久久久久| 麻豆一区二区三区在线观看| 国内露脸中年夫妇交换精品| 国产精品91在线观看| 高清全集视频免费在线| 亚洲国产精品系列| 中文字幕免费高清在线观看| 亚洲另类春色国产| 性欧美13一14内谢| 国产福利一区在线| 日本男人操女人| 欧美久久一区| 日本一区高清不卡| 99国产精品久久一区二区三区| 日本精品久久久| 操你啦视频在线| 亚洲欧洲美洲在线综合| 99在线观看精品视频| 色婷婷av一区二区三区软件| 欧美成人一二三区| 亚洲国产高清aⅴ视频| 911亚洲精选| 久久精品免费观看| 黄色片视频在线免费观看| 亚洲一区二区三区| 日韩在线电影一区| 久久久久97| 91中文在线观看| 本网站久久精品| 亲子乱一区二区三区电影| 污污影院在线观看| 色噜噜国产精品视频一区二区 | 国产欧美日韩亚州综合 | 日韩男女性生活视频| 日韩精品分区| 久久久国产一区二区三区| 久久经典视频| 亚洲国产欧美自拍| 午夜精品一二三区| 欧美精选在线播放| 探花国产精品一区二区| 欧美视频在线视频| 国产真人真事毛片| 亚洲精品日日夜夜| 任我爽在线视频| 日本一区二区视频在线| 亚洲综合网在线观看| 成人黄色一级视频| 日本少妇xxxx软件| 国产v综合v亚洲欧| 韩国一区二区在线播放| 久久99久久99精品免视看婷婷| 亚洲精品一二三四五区| 噜噜噜久久亚洲精品国产品小说| 黄色免费福利视频| 亚洲激情不卡| 少妇人妻无码专区视频| 影音先锋一区| 99久久国产综合精品五月天喷水| 国产精品www994| 91亚洲精品国产| 欧美日韩1080p| 国产欧美123| 韩日精品在线| 成 年 人 黄 色 大 片大 全| 伊人久久大香线蕉综合热线| 国产夫妻自拍一区| 狠狠色丁香久久综合频道| 国产xxxx振车| 99成人在线| 人妻内射一区二区在线视频| 亚洲欧美视频| 日韩手机在线观看视频| 日韩专区一卡二卡| 午夜久久福利视频| 国产精品自在欧美一区| 一级全黄裸体片| 不卡影院免费观看| 国产美女精品久久| 中文字幕中文字幕一区二区 | 久久久久国产精品| 91九色国产ts另类人妖| 国模大胆一区二区三区| 丰满少妇大力进入| 久久久久久穴| 在线观看免费av网址| 国产一区三区三区| 稀缺小u女呦精品呦| 91麻豆福利精品推荐| 国产aⅴ激情无码久久久无码| 国产精品欧美一区喷水| 激情小说中文字幕| 日韩欧美在线一区| 888奇米影视| 亚洲国产成人精品一区二区 | 日韩av午夜| 亚洲国产精品久久久久久女王| 欧美高清视频手机在在线| 无码人妻精品一区二区蜜桃网站| 亚洲免费黄色| 悠悠色在线精品| 少妇精品久久久久久久久久| 人人狠狠综合久久亚洲婷| 中文字幕一区二区三区乱码 | 亚洲视频在线观看免费| 看黄网站在线观看| 久久久久久久999| 影视一区二区三区| 99久久伊人精品影院| 国产成人1区| 三上悠亚免费在线观看| 中文在线不卡| 久久久精品高清| 91在线播放网址| 777777国产7777777| 福利一区视频在线观看| 国产老女人乱淫免费| 日韩激情视频在线| 好吊日视频在线观看| 国产91精品久| 麻豆精品一区| 神马影院我不卡| 9色国产精品| 91aaa精品| 国产免费久久精品| 国产污污视频在线观看| 日韩欧美国产1| 成年人视频免费在线观看| 国内精品视频在线| 99视频有精品高清视频| 日本一区美女| 国产日韩欧美高清免费| 国产伦精品一区二区三区妓女下载 | 91白丝在线| 成人免费淫片视频软件| 国产欧美一区二区三区精品观看 | 成人性生交大片免费看网站 | 国产精品免费不| 日本www在线视频| 成人亚洲精品久久久久软件| 青青操在线播放| 色菇凉天天综合网| 日本黄视频在线观看| 久久91亚洲精品中文字幕| 99精品女人在线观看免费视频| 日韩精品另类天天更新| 亚洲一区激情| 色综合久久五月| 一区二区三区中文在线| 国产精品久久久久久久久毛片| 一区二区三区在线播放欧美| 三级成人黄色影院| 噜噜噜噜噜久久久久久91| 亚洲激情婷婷| 女同性恋一区二区三区| 亚洲成av人影院在线观看网| wwwav在线播放| 欧美尺度大的性做爰视频| 3d动漫一区二区三区在线观看| 亚洲一区二三| 奇米精品一区二区三区四区| 国产传媒国产传媒| 在线视频国产一区| 国产在线色视频| 国产精品久久在线观看| 欧美第十八页| 91视频福利网| 亚洲线精品一区二区三区| 国产91麻豆视频| 午夜精品一区二区三区在线视频| 国产精品传媒| 亚洲国产精品久久久久婷蜜芽| 99精品欧美一区| 99精品人妻国产毛片| 亚洲视频电影图片偷拍一区| 欧美www.| 一区二区三区四区欧美| 国产在线精品一区二区三区不卡| 亚洲一级生活片| 精品久久免费看| 嗯~啊~轻一点视频日本在线观看| 精品久久久久久综合日本| 香蕉av777xxx色综合一区| 国产黄片一区二区三区| 欧美日韩一级二级| 尤物yw193can在线观看| 狠狠色狠狠色综合人人| 久久深夜福利| 久久99久久99精品免费看小说| 7777精品伊人久久久大香线蕉超级流畅| av在线看片| 精品国产综合| 日本午夜精品视频在线观看 | 欧美视频国产精品| 高清av在线| 999国产视频| 美女精品在线| 久草手机视频在线观看| 精品国产第一区二区三区观看体验 | 色综合成人av| 91精品国产综合久久香蕉最新版 | 三区视频在线观看| 亚洲主播在线播放| 国内av一区二区三区| 91久久久久久久久| 久久都是精品| 欧美丰满熟妇bbbbbb| 精品视频久久久久久久| 日韩福利影视| 久久综合色视频| 18欧美乱大交hd1984| 人妻少妇精品无码专区| 国产精品专区一| 国产色综合网| 东方av正在进入| 亚洲三级 欧美三级| 日韩成人在线观看视频| 国产黄色特级片| 亚洲久本草在线中文字幕| 国产在线网站| 黄色小网站91| 国产精品一区二区久激情瑜伽 | 色噜噜色狠狠狠狠狠综合色一| 国产成人丝袜美腿|