approximatenumeric.scala

来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 58 行

SCALA
58
字号
/*                     __                                               *\**     ________ ___   / /  ___     Scala API                            ****    / __/ __// _ | / /  / _ |    (c) 2003-2006, LAMP/EPFL             ****  __\ \/ /__/ __ |/ /__/ __ |                                         **** /____/\___/_/ |_/____/_/ | |                                         ****                          |/                                          **\*                                                                      */// $Id: ApproximateNumeric.scala 9043 2006-10-24 14:46:55Z dubochet $package scala.dbc.datatype;/** A type category for all SQL types that store varying-precision * numbers. */abstract class ApproximateNumeric[Type] (  override val nativeTypeId: DataType.Id) extends datatype.Numeric[Type](nativeTypeId) {  def isEquivalent(datatype: DataType) = datatype match {    case dt: ApproximateNumeric[_] =>      (nativeTypeId == dt.nativeTypeId &&       precisionRadix == dt.precisionRadix &&       precision == dt.precision &&       signed == dt.signed)    case _ =>      false  }  def isSubtypeOf (datatype:DataType) = datatype match {    case dt:ApproximateNumeric[_] =>      (nativeTypeId == dt.nativeTypeId &&       precisionRadix == dt.precisionRadix &&       precision <= dt.precision &&       signed == dt.signed)    case _ =>      false  }  /** A SQL-99 compliant string representation of the type.   *  <h3>Compatibility notice</h3> This method assumes that a real   *  uses 32 bits and a double 64. This is not defined in the   *  standard but is usually the case.   */  override def sqlString: java.lang.String = Tuple2(precisionRadix,precision) match {    case Tuple2(2,64) => "REAL"    case Tuple2(2,128) => "DOUBLE PRECISION"    case Tuple2(2,p) =>      throw exception.UnsupportedFeature("SQL-99 does not support an approximate numeric type with a binary defined precision other than 16, 32 and 64 bits");    case Tuple2(10,p) => "FLOAT (" + p.toString() + ")"    case Tuple2(pr,_) =>      throw exception.UnsupportedFeature("SQL-99 does not support the precision of an approximate numeric type to be defined in a radix other than 2 or 10");  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?