Вы можете использовать неявные классы:
import scala.math._
object ExtNumber extends App {
implicit class ExtendedDouble(n: Double) {
def rounded(x: Int) = {
val w = pow(10, x)
(n * w).toLong.toDouble / w
}
}
// usage
val a = 1.23456789
println(a.rounded(2))
}
В SQL Server создано встроенное GUID. Для этого нет необходимости писать отдельную хранимую процедуру.
Вы можете использовать
blockquote>Ключевое различие между обеими процедурами будет заключаться в том, что последовательный GUID следует использовать, если он предназначен для основного кластеризованного ключа.
Я не конечно , почему вы хотите, чтобы механизм базы данных помнил предыдущий сгенерированный GUID.
Нет, ваше предположение неверно: база данных ничего не помнит, поэтому нет никакой пользы от этой точки зрения.
Если вы используете GUID в качестве основного ключа / ключа кластеризации в SQL Server, для начала это плохая идея (здесь здесь , здесь или здесь ), вы должны хотя бы используйте функцию newsequentialid()
как ограничение по умолчанию для этого столбца.
CREATE TABLE YourTable(ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID())
Таким образом, база данных будет генерировать псевдо-последовательные GUID для вашего ПК и, таким образом, сделает отрицательный последствия использования GUID как PK / CK по меньшей мере терпимы ....
Если вы не используете GUID в качестве основного ключа, то я не вижу никакой пользы в создании этого GUID на сервер, действительно.
RFC4122 1 : «Не предполагайте, что UUID трудно догадаться; они не должны использоваться в качестве возможностей безопасности (например, идентификаторы, чье личное владение предоставляет доступ). Предсказуемый источник случайных чисел усугубит ситуацию ».
В простой задаче инкрементный uint64 лучше.
НЕ ИСПОЛЬЗУЙТЕ GUID! Если нужна безопасность.
http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/b37b3438-90f4-41fb-adb9-3ddba16fe07c
Мое предпочтение заключается в создании GUID в приложении, а не в db.